追一科技前端面经(1、2面)
9.4号一面 时长43分钟
1.先自我介绍
2.闭包
3.JS的垃圾回收机制
4.setTimeOut的this指向哪?浏览器是如何实现的?
(这里回答的不好,没有深入研究过,具体大家可以看MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout)
5.箭头函数的this
6.闭包中的变量没有被使用,会被垃圾回收吗?
(这个没有仔细了解过)
7.节流和防抖?应用场景?
8.行元素、行内块元素、块级元素?IFC和BFC?
这个具体看MDN吧
9.如何消除行元素之间的间隙?
(不会,之前没研究过这个问题,后面问的面试官,设置font-size为0就行)
10.css中的baseline?
这里涉及到了四条线:顶线、中线、基线、底线。
行内块元素参与ifc布局时候是根据底线对齐的,行级元素参与ifc时,是根据基线对齐的。
11.排序算法?重点讲下快排,然后给了一个数字序列,让我说下他们排序的过程。
12.JS设计模式?重点讲下职责链模式和策略模式的区别?
(这里我讲的不是很好,主要是职责链模式我用的很少,不太熟悉)
13.你有什么要问我?
了解了下追一科技的技术栈和业务。
技术栈:vue和基于element ui的ui库
感觉追一科技面试问题都挺好的,挺基础的但是也很重要。
并且面试官很细心与耐心,也很喜欢这个技术栈。
毕竟追一科技公司也比较新,挺想去的。
9.7号二面 时长30分钟
1.自我介绍?
2.为什么选择做前端?
3.typeof会输出哪些值?typeof null的结果为什么是object?
不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“ object ”。
这是之前第一版JS遗留下来的bug,主要是当时数值是以32字节存储的,由标志位(1~3个字节)和数值组成。标志位存储的是低位的数据。这里有五种标志位:
- 000:对象,数据是对象的应用。
- 1:整型,数据是31位带符号整数。
- 010:双精度类型,数据是双精度数字。
- 100:字符串,数据是字符串。
- 110:布尔类型,数据是布尔值。
4.验证码的作用?能具体讲下么?
1).预防CSRF。2).节流,防止机器刷
balabala
5.如何做一个火车票抢票软件?
(这里回答的不是很好,就不说了)
6.微信是如何实现扫描PC端二维码登录微信,讲下具体过程以及如何验证?
(这里也答的一般,略)
7.算法题:一个含有负数、正数、0的数组,要求调整位置,使得负数移动到左边、正数移动到右边,0保持位置不变。
这题类似于剑指offer的 调整数组顺序使奇数位于偶数前面
不过要注意的是数组中的0会影响我们正数的下标,因此我们可能需要多次扫描一遍数组。
不过至少我们的算法不需要嵌套for循环,也就是复杂度只需要O(n),具体代码大家可以尝试实现。
8.函数声明和函数表达式的区别?
balabala
9.其他
面:你的github不够活跃呀。
我:这里确实,我大部分情况只是把github当仓库用,不过博客会写的相对多点。
面:会坚持写么?从什么时候开始写的?
我:会的,以后也会保持写博客的习惯,从17年6月开始写的。
10.有没有什么想问我的?
斗胆问了下HC。。。。具体秘密,略
追一科技的二面比较偏向于问你一些业务场景,需要平时有一定的阅历以及分析能力吧。