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。
字节跳动的反馈相当快,面完没几分钟就通知我挂了。如果选择服从调剂还有可能被再次捞起来。
总结:
-
- 自我介绍。我面试之前有梳理过自我介绍,但面的时候刚开始没进入状态,还是说乱了
- 与面试官的沟通问题。面试官问问题是有想考问的点,先思考究竟是在问什么(不过也许面的时候脑子就不好用了)。如果你理解歪了,面试官会想办法引导你(比如第一个问题,我回答了计算机网络方面的,其实本来是在问浏览器渲染),你也可以向面试官确认,如果引导不过来,就可能会换个问题(比如第3题)。
- 关于当场写代码。当场写会发现一些函数大概知道就是忘了怎么用,脑子转不动了。这次面试官说不会的函数可以查一下,我问能不能看一下自己的笔记,这个不能。
- 这次大部分问题我都答上了,主要第1部分问了CSS、浏览器渲染方面的,然后问了一点点计算机网络(然而很简单的我最近没复习答错了,可能因此没有在这个方面为难我),后面就基本都是js了,还要写代码。
没答好的:自我介绍;http、路由器在哪层;伪数组转数组,隐式类型转换;代码题(在提示下写好一个,不过这部分不顺利);自执行函数改变变量上下文。