您的位置:首页 > 职场人生

【面试】字节跳动前端一面

2019-03-23 16:03 1291 查看

2019-03-23  

自我介绍

  简历上有的基本信息我一句话带过,着重讲的前端的学习和实践经验,不过有点慌没讲好。

  我提到了梳理疏漏的前端知识,然后就让我举例。原型链、作用域、ES6等。 

(CSS相关)

1. 从浏览器输入http://www.toutiao.com/敲下回车键开始,到页面完整显示出来,整个过程发生了什么?

答:dns域名解析、端口、请求、响应

浏览器渲染过程?

答:dom树、css树、渲染树。。。

重绘和重排?

答:计算布局、重新绘制。

CSS边距重叠?怎么解决?

答:….BFC。

对BFC的理解?

答:答了BFC的生成规则和渲染规则。

1.1.  http在应用层,路由器工作在网络层。

(计算机网络)

 

(javascript)

 2. ==和===有什么区别?什么是伪数组?arguments,答:内容可修改,长度不可变。

如何把伪数组转成数组,比较字符串1和字面量1做了那些工作?没答出来。(隐式类型转换)

 

 3. 实现一个ES6数组的map方法?(没听懂题,面试官换了下一个)

function map () {

}

const newArr = map(arr, (item, idx) => { });

 

 4. (js代码题)

  versions是一个项目的版本号列表,因多人维护,不规则,要求从小到大排序,versions=['1.45.0',  '1.5',  '6',  '3.3.3.3.3.3.3']

先讲了思路,然后面试官给了提示,我想到给sort函数传一个比较的函数,然后写出来了

 

 5.

什么是闭包?

答:函数嵌套,内部函数调用外部函数变量,私有变量

js中有哪几种作用域?

答:全局、局部、块级(let)

let和const的区别?

答:const不能修改,但是引用类型的变量里面其实可以。

引用类型在内存中怎么放的?

答:引用类型堆内存中,基本类型在栈内存中。

有哪些引用类型?

答:对象、数组、函数。。。

 

   (代码题,讲了思路后,改为代码分析题)

实现每隔1秒输出数组中的一个数字,我想用promise,面试官说不用ES6的,方法记不住的可以查一下,

我就说用定时器,先说了思路,然后面试官给了代码让我分析能否实现。

array = [1,2,3,4,5]

for(i=0;i<array.length;i++){

setTimeout(function(){

console.log(array[i]);

},i*1000);

}

 

答:刚开始有点忘了,答了可以,我又想起来,就问了i是不是前面定义好了的全局变量,回答说如果是全局变量,最后5个定时器都是5s后执行,不能实现,定时器是异步任务,会在同步任务都做完之后执行,那时i是5。 然后面试官追问如何改一下使它可以,我回答用let 来定义i,继续追问是否有其他方法,想不起来,面试官说还可以用自执行函数来改变i的上下文。

最后向面试官提问,我问了公司前端用的框架。面试官说各种框架都有在用。武汉这边是在用react、electron。

 

字节跳动的反馈相当快,面完没几分钟就通知我挂了。如果选择服从调剂还有可能被再次捞起来。

 

总结:

  • [li]自我介绍。我面试之前有梳理过自我介绍,但面的时候刚开始没进入状态,还是说乱了
  • 与面试官的沟通问题。面试官问问题是有想考问的点,先思考究竟是在问什么(不过也许面的时候脑子就不好用了)。如果你理解歪了,面试官会想办法引导你(比如第一个问题,我回答了计算机网络方面的,其实本来是在问浏览器渲染),你也可以向面试官确认,如果引导不过来,就可能会换个问题(比如第3题)。
  • 关于当场写代码。当场写会发现一些函数大概知道就是忘了怎么用,脑子转不动了。这次面试官说不会的函数可以查一下,我问能不能看一下自己的笔记,这个不能。
  • 这次大部分问题我都答上了,主要第1部分问了CSS、浏览器渲染方面的,然后问了一点点计算机网络(然而很简单的我最近没复习答错了,可能因此没有在这个方面为难我),后面就基本都是js了,还要写代码。
[/li]

没答好的:自我介绍;http、路由器在哪层;伪数组转数组,隐式类型转换;代码题(在提示下写好一个,不过这部分不顺利);自执行函数改变变量上下文。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: