1.哔哩哔哩-2017前端面试
一面:
1. 如何实现一个同花顺?写代码如何实现?(七张牌同一花色并且数字相连)
2. display有哪些属性值?
3. 块级元素与内联元素的区别?
4. 冒泡排序的复杂度是多少?快排呢?
5. 如何实现快排?
6. JS的基本数据类型
7. 获取DOM节点的几个方法?
8. 如何给DOM节点上添加事件?
9. 如何实现水平垂直居中?
10. position的属性值有哪些?
11. HTTP状态码有哪些?
12. GET和POST的区别?
二面:
1. 如何实现二分查找?(迭代版和递归版,问那个效率高一些)
2. JavaScript递归转循环?(表示这个没有听过)
3. 如何用原生JS实现一个队列?
4. 如何实现一个栈?(两种方法,然后问哪个效率高一些?)
5. 数组删除元素的方法
6. 添加元素的方法
7. join()方法?sort()方法
8. 原型链?讲下有什么作用?ES6中Class与原型的关系
9. 为什么Class 中constructor里面定义的属性是对象本身的属性?
10. ES6 Proxy的概念?(表示没有用过,不知道适合哪种应用)
11. 还用过ES6的哪些新的特性?
12. 闭包?运行时上下文里面包括什么?
2.百度-2017前端面试题
一面:
- TCP三次握手四次挥手了解吗?介绍下。
- HTTPS的连接是什么样的?有了解过吗?(只说了简单原理,没有看过具体是怎么回事?)
- HTTP的Cache是怎么结合浏览器的,具体能说下有哪些字段?计算机方面学过哪些课程?(说到了算法)
- 然后问排序算法有哪些?(说到插入排序,冒泡排序,快速排序,归并排序,堆排序)
- 后面又问快速排序和堆排序的优点(特点)是什么?(表示算法不是特别好,面试官还一直鼓励,说没事)
- JS如何实现快速排序算法的?
- 对MVC、MVP以及MVVM了解吗?有提到`MVVM`的双向绑定,然后又问到双向绑定是绑定谁和谁?
- React算是什么模式架构?Vue呢?
- AMD、CMD模块化规范?有什么区别?他们的应用都有哪些?
- ES6的Module?
- 说到ES6是静态化导入的,而且不能分支导入,然后问AMD、CMD能够分支导入吗?
- 对于Web的XSS攻击和CSRF攻击有了解吗?如何去防范?
- React组件中子组件如何与父组件进行通信?
- 然后问实习中主要做了什么?
- 有提到React组件的生命周期,问生命周期有哪些?说了一些,面试官说感觉我很熟悉这个,不用说了
- 最后还问如何去评估你做的这个东西的价值?
- 后面就是问我还有什么问题。
3.美团-2017前端面试题
一面:
- 自我介绍
- 做了哪些项目?
- 项目中遇到的问题?技术栈上遇到什么问题?
- TCP和UDP的区别有哪些?(当时只回答出来面向连接和无连接) TCP:面向连接的(三次握手建立连接);保证数据正确性;流模式UDP:无连接的;尽可能交付,不保证数据到达的顺序;数据报模式
- HTTP restful有了解吗?(没有听说过,貌似是一种设计风格,不是一种协议)
- 因为上面说完全没有了解过,又问我对于HTTP的状态码是否有了解。
- 平时用什么代码管理?(GitHub)
- Github常用的命令有哪些?
- Fetch命令有没有用到过?是什么用的?(没有用到过Fetch,但是用到Git pull,拉下来最新的代码然后与本地代码合并,但是Fetch不会合并)
- 浏览器的缓存机制了解吗?(不太了解)
- CSS如何实现水平垂直方向的居中(Flex布局; Position结合margin负值实现)
- 比如一个模态框,右上角一个关闭按钮,样式就是一个圆圈,里面一个叉,不用Icon图标实现,纯CSS如何去实现?(利用伪元素以及字符的Unicode码)
- 原生JS如何实现继承?(原型继承,伪造对象方式)
- 讲了好几种继承,后来又问如果让你去实现一个new操作,原生JS如何去实现?
- 原生JS获取DOM节点的API有哪些?(getElementById, getElementByTagName, getElemmentByClassName, querySelector, querySelectorAll)
- document.ready和window.load有什么区别?(触发时机不一样;执行次数不一样)
- call、apply、bind函数的区别?
- 因为简历里有提到ES6,然后问ES6的新特性有哪些?提到箭头函数,又问箭头函数的作用是什么?箭头函数与普通函数有什么不一样?
- 也有提到React,问React的Diff算法是否有了解?
- 如果让你实现一个购物车,如何去实现?比如复选框,每个物品后面都有一个复选框,和最后也有一个全选的框,如何用原生JS去实现?记得之前看过一篇关于发布订阅模式的帖子,里面有用这个举例,不过想不起来具体怎么做的了
- 还有HTTP的Method有哪些?Get和Post有什么区别?如何理解幂等性和安全性?
- 最后是一个智力题,有若干条绳子,每一条材质都不均匀,并且不均匀程度也不一样,但每一根烧完都是一个小时。然后问怎么去测一个小时十五分钟的时间?
- 最后问如何去学习前端的?前端学了多久?对美团有没有什么认识?介绍了下我所报的部门的业务,我问了下技术栈。一面基本就这么多。
二面:
1. 如何实现一个计数器;(闭包就可以)
2. 加入上面实现的计数器为f函数。
a = f();
b = f();
a();
b();
问输出是多少?(这一题答得不好,其实a和b是一样的函数,应该都输出1)
3. CSS的选择器权重
4. 如何提升页面加载速度?
5. 因为上面提到回流和重绘,又问回流和重绘的区别?
6. Web安全是否了解过?XSS原理和如何防范?
7. 跨域?如何实现?(提到JSONP,然后问缺点是啥?)
8. TCP三次握手?
9. 数组和链表的区别?
10. 栈和队列的区别?
11. 盒模型是啥?
12. 有一个div父元素,里面有很多子元素,比如div,p等等,如何实现点击div父元素里面任意一个紧邻的子元素,打印出其中的innerHTML?(提到事件委托)
13. 下来是两道简单的算法题:有一个排好序的数组,并且数字都没有重复,给定一个数字m,判断数组中是否存在m的值,并且存在返回位置,如果不存在,返回-1.(用二分查找,属于递归,递归的终止条件).另一个是,求m的n次方,m和n都是整数。(这里需要考虑整数包括正整数和负整数,另外说了一个O(n)的方法,又问有没有更优的。后面想到可以判断n是否为2的倍数,一直除2,每次最终的数等于上一次得到的数乘以m的2次方,这样就是O(lgn)的复杂度应该。)
14. 下来就是对自己3-5年内有没有什么规划。
15. 最后就是聊聊天,问目前有没有Offer,然后问面了哪些公司?然后还问家是哪里的这些。
16. 最后就是有没有问题问他,就问前面的问题哪些答得不好?说了几个缺点,个人也觉得没有答得很好,有几个确实没有发挥好,也有些是考虑不全面的问题。