小米内推前端1-3面面经
牛客网这个文本编辑感觉不太好用,排版就不排了,还是内容比较重要。
大致说一下吧,就是15号投的简历,然后17号电话一面,23号去现场面了后面两面……
面试体验超好,我疯狂给面试官们比心心,狂圈粉。
发一下面经,攒攒人品,offer快到碗里来鸭!!!
一面
电话面,因为那天是周六,马上要做腾讯笔试了,所以就是简单聊了一下。大约聊了40分钟的样子吧。
先问的算法
问了快排,快排时间复杂度。我解释了为什么是nlogn
然后跟他搜快排其实就是二分加冒泡的合体,他就问了二分解决什么问题,怎么做二分,时间复杂度, 为什么是logn。
可能因为答得比较顺,所以面试官觉得我算法还不错,就直接没问了。
然后问了一下CSS
box-sizing属性
CSS选择器的权重顺序
动画的两个属性区别和适用场景
JS的问题:
闭包
作用域链
原型链
作用域链和原型链的区别
事件机制 冒泡有什么用 除了事件委托呢?
网络:
301和302状态码的区别是什么 分别用于什么情况下
为什么有了301还要有302 ?我说可能需要临时跳转一下,不是永久的;他说还可以用来做站点统计,如 果301的话,浏览器下次就直接去那个新的地址了。
304是干啥的 强缓存和协商缓存 细说
http1.0和2.0的区别
提问环节:
部门是做什么的?
招聘流程是啥样的? 现场面还有两面,然后面试结束10分钟后直接跟我敲定了现场面时间
二面
现场面,第一个面试官是个人美还温和的小姐姐。大约面了一个多小时的样子。
中间的手撕代码题,我会加粗表示。
先聊了会儿天
手写垂直居中的多种实现方法
原生实现Ajax
说一下httpXMLRequest的5个state是啥? 其实没答完,脑子一片空白。小姐姐人很好,帮我补充完整了,化解了尴尬。
又问了一些CSS的问题,具体的想不太起来了
闭包是什么 然后做了道题。解释原因。
大致说了一下浏览器渲染机制
304的两个强缓存 协商缓存 区别,什么时候用哪个?
http的请求头部有哪些比较常用的? http有哪些请求方法?分别能做什么? 具体说一下post和get的区别.
中间聊了会儿项目
用过的ES6方法 具体说,怎么用的?
手写事件委托,循环判断有没有父节点 其实当时没有判断父节点的,还是小姐姐提示了,我才写的哈哈哈哈
然后问了跟事件有关的一些东西,具体也想不太起来了
说了到MVVM和虚拟DOM
为什么没用过框架,还去了解了这些?我说这些是框架的原理和基础,我看了有助于我后面对框架的学 习,但我还没有系统地去看框架。
探讨了一下框架到底有什么好处?
最后手写两个数组合并后排序 要求尽可能时间复杂度低
三面
聊了一会儿项目
聊天,说各种情景下的问题如何解决 主要看解决问题的能力
问了一些html 非常基础的东西,比如说 html的结构, doctype是啥, HTML5的写法,为啥是那样写的
问了CSS引用方式和加载顺序
scrpit标签位置对加载的影响
然后问了onready事件和onload事件
CSS的display属性有哪些
EventLoop 宏任务 微任务
http的状态码有哪些‘?都有啥用? 从100 到500 常用的全部挨个说了一遍:(比较重要的就是101 200 204 206 301 302 304 400 500 502)
网络的好像也乱七八糟问了一些……有点想不起来了,但了解的话就是很简单。
ES6的方法有了解哪些?
块级作用域是什么有哪些?
异步都在什么时候用?
有没有看英文文档什么的?我说我都是遇到了问题才去看,他让我举个例子,然后我说了V8团队在 EventLoop上对async做了一些改进,原来是什么样的,现在是什么样的。给他说了个实例,就是那种 async里面的await后面跟了一个async里面console.log(1)的。他问我为什么会去看这个,我说我看事件 流的时候,两个电脑的浏览器版本不一样,跑出来的结果不同,然后我去百度搜了没搜到,但是在 stack overflow看到了一个类似的问题,顺着人家的答案找到了V8团队的官方说明。然后跟面试官具体 介绍了一下这个改进。不过我自己也没太理解,所以感觉讲的也不太好。
之后又聊天,说项目里面遇到比较困难的事情是什么?有什么有成就感的事情?需求沟通怎么做的?
最后让写了个爬梯子的问题,就是斐波拉契数列啦~
提问环节:
新员工的培训模式是什么?
实习?
#小米##前端工程师##面经#