加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂

发布时间:2019-02-21 01:06:13 所属栏目:优化 来源:佚名
导读:引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~。缩减HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博主始终相信,寒冬之中,人才更是尤为珍贵。只要有过硬的操作和

generator:

  1. - `yield`: 暂停代码  
  2. - `next()`: 继续执行代码  
  1. function* helloWorld() { 
  2.   yield 'hello'; 
  3.   yield 'world'; 
  4.   return 'ending'; 
  5.  
  6. const generator = helloWorld(); 
  7.  
  8. generator.next()  // { value: 'hello', done: false } 
  9.  
  10. generator.next()  // { value: 'world', done: false } 
  11.  
  12. generator.next()  // { value: 'ending', done: true } 
  13.  
  14. generator.next()  // { value: undefined, done: true }  
  1. - `await / async`: 是`generator`的语法糖, babel中是基于`promise`实现。 
  2.  
  3. ```js 
  4. async function getUserByAsync(){ 
  5.    let user = await fetchUser(); 
  6.    return user; 
  7.  
  8. const user = await getUserByAsync() 
  9. console.log(user) 
  10. ```  

18. AST

抽象语法树 (Abstract Syntax Tree),是将代码逐字母解析成 树状对象 的形式。这是语言之间的转换、代码语法检查,代码风格检查,代码格式化,代码高亮,代码错误提示,代码自动补全等等的基础。例如:

  1. function square(n){ 
  2.     return n * n 

通过解析转化成的AST如下图:

19. babel编译原理

  • babylon 将 ES6/ES7 代码解析成 AST
  • babel-traverse 对 AST 进行遍历转译,得到新的 AST
  • 新 AST 通过 babel-generator 转换成 ES5

20. 函数柯里化

在一个函数中,首先填充几个参数,然后再返回一个新的函数的技术,称为函数的柯里化。通常可用于在不侵入函数的前提下,为函数 预置通用参数,供多次重复调用。

  1. const add = function add(x) { 
  2.     return function (y) { 
  3.         return x + y 
  4.     } 
  5.  
  6. const add1 = add(1) 
  7.  
  8. add1(2) === 3 
  9. add1(20) === 21 

21. 数组(array)

  • map: 遍历数组,返回回调返回值组成的新数组
  • forEach: 无法break,可以用try/catchthrow new Error来停止
  • filter: 过滤
  • some: 有一项返回true,则整体为true
  • every: 有一项返回false,则整体为false
  • join: 通过指定连接符生成字符串
  • push / pop: 末尾推入和弹出,改变原数组, 返回推入/弹出项
  • unshift / shift: 头部推入和弹出,改变原数组,返回操作项
  • sort(fn) / reverse: 排序与反转,改变原数组
  • concat: 连接数组,不影响原数组, 浅拷贝
  • slice(start, end): 返回截断后的新数组,不改变原数组
  • splice(start, number, value...): 返回删除元素组成的数组,value 为插入项,改变原数组
  • indexOf / lastIndexOf(value, fromIndex): 查找数组项,返回对应的下标
  • reduce / reduceRight(fn(prev, cur), defaultPrev): 两两执行,prev 为上次化简函数的return值,cur 为当前值(从第二项开始)
  • 数组乱序:
  1. var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
  2. arr.sort(function () { 
  3.     return Math.random() - 0.5; 
  4. }); 
  • 数组拆解: flat: [1,[2,3]] --> [1, 2, 3]
  1. arr.prototype.flat = function() { 
  2.     this.toString().split(',').map(item => +item ) 

浏览器

1. 跨标签页通讯

不同标签页间的通讯,本质原理就是去运用一些可以 共享的中间介质,因此比较常用的有以下方法:

  • (编辑:晋中站长网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读