2018年人生中最重要的事情之一就是找工作啦,从6月份初断断续续开始复习,7月内推开始,9月大批量的笔试、面试,10月初拿到了自己比较满意的offer,也是历经了快4个月。
简历投的主要是杭州、上海的一些大厂们,分享一些面试的问题吧,考到烂的如输入url发生了什么、闭包是什么就不放出来了。
不过这些面试题虽然常见,但是还是要用心掌握,因为考到的频率确实蛮高的。由于当时并没怎么接触nodejs和react ,所以这方面的题目没有。
js相关
- ajax和axios的不同(多益)
- vue中在哪个阶段进行异步请求比较合适(阿里,百度)
- 微信小程序底层实现的机制(jsbridge)(阿里)
- vue中vuex的mapSetter是怎么实现的(bilibili)
- 什么是尾递归(bilibili)
- vue项目中使用到的优化手段(网易)
- commonjs和ES6中的模块化有什么区别(网易)
回答见阮一峰的博客 - webstoreage如果存储满了会怎么样(报错)(网易)
- application cache是怎么设置的(网易)
- 如何获取一个div下所有的文本节点(网易)
- 兼容浏览器的一些方法(网易)
- 为什么不同浏览器渲染出来的东西会有差别,本质是什么(网易)
- vue中写一个组件要注意哪些(58)
- js如何实现多线程,webworker怎么通信(美团)
- vue的异步更新考察:(美团)
vue中以下代码会出发几次update生命周期(1次)
1 | this.a=1 |
vue中以下代码会出发几次update生命周期(2次)
1 | setTimout(()=>{ |
那些红宝书里都有的知识点
红宝书(javascript高级程序设计一定要好好看呀~~~ )
- BOM有哪些东西(网易)
- requestAnimationFrame和setTimeout写动画的区别 (网易)
- 如果得到今天是星期几(getDay()(网易)
【我回答出来后,网易面试官说你怎么记得那么清楚 - -|||】
css相关
- 如何实现小于12px的字体效果(大疆)
- css匹配的算法(从右向左)(大疆)
- animation和transition的区别(阿里)
- 一个div从一个地方挪到另一个地方的动画如何实现,如果还要求鼠标放上去时,该div还要旋转怎么写(美团)
- 浮动和清除浮动考察(58):
如何5个div,其中第三个变成浮动的,会怎么样
怎么让他变回去——清除浮动 - 如何实现一个进度条(新浪)
手写代码
- 数组去重怎么做,如果是数组是这样的[1,[2],[3]],该如何去重(bilibili)
- 写一个函数 实现test(a)(b),如果b>0 返回a+b,如果b<0,返回a-b(柯里化考察)(bilibili)
1 | function test(){ |
- 实现链式调用(百度)
1 | coder.sleep().print1().print2() |
- 如果sleep函数要等待3秒钟再打印然后在执行之后的操作呢?
1 | class Coder { |
- 以下代码会输出什么(百度)
1 | var date = new Date(); |
-
事件代理考察:(百度)
如果有一个页面,有许多a标签,在上面写点击事件的事件代理怎么写。
如果a标签里面也有很多子节点,点击了这些子节点也要实现上面效果?
思路:循环判断e.target.parentNode.tagName===“a” -
跳台阶算法(美团)
-
火车运煤算法(美团)
-
[1,[2],[3,[4]]]这种无限嵌套数组 变成[1,2,3,4]怎么做(58)
数据库
- 项目中为什么使用mongodb,数据库的三大范式(百度)
- mongodb的aggregate介绍一下(阿里)
- mysql的优化手段(美团)
- mysql索引的原理(问的较多)
计算机网络
常见问题
- get和post的区别
- 状态码
- http和https的区别
其他
- dns请求过程
- dns是基于什么协议(美团)
- TCP和UDP的使用场景和区别(美团)
- url除了http https之类的协议,可以有自己自定义么。(58)
思路:可以,例如微信小程序底层Js Bridge原理就是利用url scheme拦截等
其他
-
操作系统的功能(百度)
-
页面置换的算法有哪些(bilibili)
-
前端安全(xss,csrf)(几乎每个大厂都问到了)
-
AES和MD5的区别
-
git的stage,三个区是什么(工作区,暂存区,版本库)(阿里)
如果要写实现一个抢红包页面,如何防止有人恶意一直玩抢红包或者发包模拟抢红包请求(网易)。
个人思路:
1、判断一段时间内同一个IP的请求数量
2、设置验证码
3、看页面访问顺序,一般有一个入口页面再是抢红包页面。恶意发包可能是直接的页面请求
4、达到一定次数或者红包额度,直接丢包 -
js和c语言编译的差别
-
有一个用户登录的表单,你会如何做使达到安全。(美团)
-
etag的原理(文件名时间hash)(美团)
-
一个微博api,提供top10的数据,但是每次去请求并不一定更新,所以每次这样请求返回数据会浪费流量,希望有一个api可以返回是否更新,要怎么操作。(美团)
思路:将数据进行hash,每次判断一下和上一次的hash值。 -
jquery和vue的区别(美团)
一些面试心得
- 熟悉简历上写的任何东西
- 回答问题时引到自己熟悉的东西上
比如问你ES6掌握情况,挑自己熟悉的讲
比如前端优化回答时,挑自己理解原理的讲,比如避免重排重绘,之后一般还会继续问哪些会引起重绘重排 - 对方提不知道如何回答的问题时
1 | 1、引到自己会的:比如问php的继承,讲将js的继承,问mysql的优化手段时,讲mongodb的优化手段 |
- 展示自己的博客
- 熟悉的问题可以回答的深入一些
- 手写代码时考虑封装、数据类型判断等
- 面试后总结
面试时有些问题觉得面试官问的很奇怪,要好好想想人家问问题背后的动机、想考察的知识点。
祝大家都能拿到心仪的offer,哟呼~~