美文网首页笔试&&面试经验
记一次凉凉的小米前端面试

记一次凉凉的小米前端面试

作者: 92e6a2b361e8 | 来源:发表于2018-07-20 21:53 被阅读15次

    推广一下个人网站:Bougie's Blog

    毕业一年的跨专业萌新,在拉勾上投了武汉小米的简历,不出两天,简历被HR姐姐标为“不合适”,心想自己这点履历和经验小米是看不上了。又过两天,大概晚上八九点钟,HR姐姐突然打电话说邀请面试。也是有点奇怪。

    从家到小米有两个小时车程,做公交车二层晃得竟然有点想吐了。心想做程序员一年,没学到啥高深的东西身体却不知不觉间变得这么差了;同时对此次面试也没抱太大期望,因为自身实力和小米的招聘要求还是差了一个档次。进入小米正门,左手边是小米信息部,右手边是wps。想起来前不久在一个招聘群里面认识的wps的孝感老乡就在隔壁上班,也是一种缘分哈哈。

    笔试

    面试前要先做一份笔试题,题目大概是:

    1. 爬虫引擎是怎样抓取页面的

    2. 浏览器渲染页面的过程

      1. 用户输入URL地址
      2. 浏览器解析URL解析出主机名
      3. 浏览器将主机名转换成服务器ip地址(浏览器先查找本地DNS缓存列表 没有的话 再向浏览器默认的DNS服务器发送查询请求 同时缓存)
      4. 浏览器将端口号从URL中解析出来
      5. 浏览器建立一条与目标Web服务器的TCP连接(三次握手)
      6. 浏览器向服务器发送一条HTTP请求报文
      7. 服务器向浏览器返回一条HTTP响应报文
      8. 关闭连接 浏览器解析文档

      网上找的标准答案,自己答得也是这么个意思,但是没这详细。

    3. 异步编程的四种方法
      看到这题瞬间感觉阮老师简直就是中国前端界的教父级人物啊,面试官的理想答案应该是阮老师这篇文章:Javascript异步编程的4种方法。自己特地看过,也总结在我的面试题总结里面了:前端面试偏门题总结。但是记性太差还是答偏了,心里恨啊。

    4. 解释同步\异步、阻塞\非阻塞、并行\并发之间的区别
      这里补充一下并行和并发:并行是指运算中的两件或更多件事情在同一时刻发生。实事求是地说,这种情况只会在系统CPU拥有两个独立核心时发生,这样在任何时刻才会有不同的电脉冲信号发出。并发意味着至少两件事务在同一时间段发生。但注意,这里的事务是(高级的)任务,而不是(低级的)操作。所以,请分清并发和并行。

    5. js实现数值千分位
      头条笔试碰到过了:number.toLocaleString()

    6. 多语言网站建设应注意哪些事项
      一开始以为多语言是pythonjavaphp啥的,后面面试官说是各个国家语言。

    7. React非父子、兄弟组件传值
      状态管理:Redux、Mobx等等

    8. "123456789876543212345678987654321..."的第n位是什么

      function getNum(n) {
          let num = 1, flag = true
          for(let i = 0; i <= n; i++) {
              if(num === 1) flag = true
              if(num === 9) flag = false
              flag ? num++ : num--
          }
          return num
      }
      

      时间有点紧不小心把i <= n写成i < n了,尴尬,怪自己不细心吧。

    时限是20分钟,还有两三题记不清了。

    面试

    面试官很亲切,说话很流畅并且肯定,感觉是个知识体系非常齐全的大牛。以下题目顺序并不是面试官问的顺序:

    1. 浏览器打开一个页面前端缓存了哪些东西?
      我:后端通过设置响应头Cache Control设置资源过期时间,用于缓存一些静态资源
      面试官:还有呢
      我:DNS缓存
      面试官:后端缓存了什么
      我:缓存了session
      面试官:还有呢
      我:...答不上来了

    2. 说一下vue的生命周期
      一年的Vue不是白用的,顺利从beforeCreatedestroyed过了一遍

    3. 你的博客用的是Koa,Express用过吗?
      我:用过,我的个人博客本来用的是Express,后面改成Koa了
      面试官:为什么要改?Express不好用吗?
      我:Koa的路由用async和await处理,不会陷入回调地狱
      面试官:Express的路由也可以封装成async\await,自己试过没有?
      我:没有。。。

    4. 你的博客用的什么服务器?
      我:用的Node服务器,pm2做进程守护的
      面试官:代码直接放上去运行的还是编译后运行的
      我:(一脸懵比,脚本语言还能编译???)直接运行的
      面试官:服务器是什么系统的?
      我:windows sever...(感觉面试官笑了)

      后来查了一下,segmentFault的大佬们也说Node JS不用编译:运行在服务端的Node.js代码需要编译吗?,好想追问一下面试官到底怎么编译啊。

    5. 有没有自己实现过Promise?
      看了不少文章,自己也写过了,但问到细节还是答烂了。

    6. 有没有写过Webpack插件?
      我:没有...

    7. new 一个对象后发生了什么?

    8. 写过响应式网站吗?
      我的个人博客就是响应式的,主要说了媒体查询和rem控制字体大小。

    9. 说一下原型和原型链

    10. 有没有自己写过比较复杂的正则?

    11. 有没有封装过axios?

    12. 前后分离的系统,一个请求出错了,如何中断其它请求?

    13. 如何在axios中添加登陆验证?

    14. rollup了解过没?

    15. 为什么rollup打包赘余代码比较少?

    16. 有没有结合原生封装过RN组件?

    17. 为什么用高德地图不用百度地图?

    18. 怎样在Android Studio中对React Native的js代码进行断点调试?

    ......

    还有n多问题记不太清了...

    然后面试官问了一些其他的东西,对小米有什么看法?995上班、加班没有加班费能不能接收等等。心想小米在雷总的带领下还真是拼啊。

    面试聊了一个小时,很多问题答烂了,今年应该是和小米无缘了。也明显看到了自身实力的不足。很感谢面试官给我这次面试机会。

    相关文章

      网友评论

        本文标题:记一次凉凉的小米前端面试

        本文链接:https://www.haomeiwen.com/subject/eustmftx.html