前端面试之旅

40,664

2018年,变动的一年,随着P2P的雷声不断轰鸣,各企业纷纷开始裁员过冬,“开猿节流”一词正式被创造,很不幸,笔者所在的金融公司也不得不进入“冬眠”,而我也在农历新年前变成了求职大军中的一员。

因为不想回家过年时连工作的没有,然后焦虑的心情每日缠绕于身,压力愈来愈大,随之下决心一定要在年前拿到offer,就为回家过年也能图个轻松。看了看招聘的一些网站,年前的招人的公司也少的可怜,开始主动在各个渠道投递简历,也主动找人内推,大概经历了一个月之久,最终黄天不负有心人,在年前回家拿到了自己满意的公司offer,也是平时一直在心底视之为目标默默努力的公司。

开始新工作也过去了一段时间了,现在回想,也是感慨,塞翁失马焉知非福呢。今天特地整理了一下年初面试过的几个公司的相关的题目,给需要使用的同学参考一下,也告诫大家一定要有目标,有了目标后便有了力量,便有了恒心决心为之努力!

下面整理了一下面试的几家公司的面试题,大家有需要的看看,有问题一起探讨!


一. 某在线教育公司


职位: 全栈工程师


简述: 一共一下午,两面现场技术。


第一面

比较年轻的一个小哥,给人一看就是大佬的感觉,上来看了一下简历,开始做了自我介绍后,进入提问环节。

  1. 说一下对bind,call,apply三个函数的认识,自己实现一下bind方法。

  2. 前端的requestAnimationFrame了解吗?有使用过吗?说一下使用场景。

  3. 对前端性能优化有什么了解?有在之前的工作中解决过性能问题么?一般都通过那几个方面去优化的?

  4. 对前后端跨域可以说一下吗?有碰到过跨域问题吗?如何解决跨域的?

  5. 介绍一下对nodejs的异步IO原理。

  6. 一道简单的算法题,实现输入一个字符串,返回字符串翻转输出。


第二面

进来气场就不一样,年纪差不多35以上,自我介绍了一下,便开始提问环节。

  1. 说一下之前应用服务的部署模式。

  2. 对nodejs的进程维护有了解过么?你们有遇到过nodejs一些内存泄露方面的问题吗?说一下内存泄露。

  3. 之前用redis做缓存中间件是为了解决什么问题?说一下你们关于redis的设计架构。

  4. 说一下你做过最有成长的一个项目,简单总结一下。

  5. 讲一下你对之前项目里使用的消息中间件的理解,为什么引入这个东西,它解决了什么问题。

  6. 他开始介绍他们团队做的事。


后面就是HR面试了,两个HR问了一些情况后,留了微信便离开了,公司比较偏,找了半天公交站,坐到地铁站,因为心事重重,结果地铁还给坐反了,回家已经晚上11点多。



二. 某创业公司


因为我是有点想加入创业团队的,想着自己还年轻,还能加班,况且万一运气好蹭个大佬,从此坐上开挂的列车,走上人生巅峰呢!便去了一个创业公司面试。


职位:全栈工程师


简述:中午12:30去面试,不理解为什么在正中午面,大概是为了考验候选人?我去的时候面试大佬正好出来扔外卖盒,看到我背个包喊出了我的名字,心想"我去,还没面试,大佬这就记住我了?so excited",因为公司就三个人,而且面我的大佬还是其他公司在职的,只是偶尔会过来,所以一共一面技术。


一面

上来就是做题,心态完全没有调整过来,贼紧张。

  1. 手写一下快速排序算法。

  2. 看你简历有加密算法的内容,简单讲一下关于加密算法相关的内容。

  3. 说一下https的工作原理,里面涉及到的加密算法都有哪些?

  4. 设计一个后台管理系统,从数据库表设计到后端服务提供。

  5. 一道算法题,一个数组中找出所有相同的元素,并且做出分类,在彩笔白板上写完,面试官笑了一下,js写还真方便。



因为没有hr,大佬跟我谈了薪资,并且告诉我他们现在已经在盈利了,年终可以分很多...



三. 某数据广告公司(500人左右)


在这里是我遇到真正最难的一次面试,被大佬虐的体无完肤,最后还是拿到公司的offer。首先面试的是公司的类似于“基础建设”的部门,应该是只搞技术不做业务的部门,但是需要的比较资深的nodejs大牛,最终不合适,但是大佬推荐到了一个业务部门,这边的又经历了两次面试,最终拿到offer,一共经历了三轮技术面


职位:全栈工程师


第一面

未面试通过,简历被推荐到另一个部门。

  1. 说一下nodejs里对Buffer数据类型的认识,对于初始化的Buffer,可以实现增加长度吗?

  2. 对nodejs的异步IO的认识,异步IO内部的工作原理,以及内部线程池相关内容。

  3. 说一说Linux的几种IO模型,分别描述一下是怎么一回事。

  4. 多进程部署的Nodejs应用有何优缺点,简述一下进程之间的通信方式。

  5. TCP三次握手四次挥手的具体细节。

  6. Nodejs源码层面的一些内容。


第二面

  1. 说一下Vue和React的认识,做一个简单的对比。

  2. React的Dom的diff算法描述一下。

  3. 浏览器cookie和session的认识。

  4. 跨域分哪几种类型,如何解决各个跨域的问题。

  5. nodejs的setTimeOut不准时的原因分析。


第三面

  1. nodejs进程间通信方式。

  2. nodejs高并发怎么理解?为什么不适合运算量大的操作?如果我要用实现运算量大的操作有什么方式?

  3. redis缓存系统的相关内容。

  4. 在之前工作中做的项目中有收获的,系统描述一下收获了什么?

  5. 介绍了一些他们使用的技术栈和正在做的事情。


HR面试也给到了非常不错的薪资,心里觉得先进去,后面再找机会进一面的大佬的团队,随着有了两个offer心情也逐渐放松了。



四. TMD某条大厂


大厂就是大厂,一来就给发个牌带上,面试官很守时也很客气,我被带到了一个会议室,开始了面试之旅,一共三面技术面。


职业:全栈工程师


第一面

首先上来给了一套题,两大业,我拿到后,翻看了一下,汗水直流啊!一边擦汗一边做!题目做完开始按照做的题提问环节。

  1. 关于css3里阴影的一些知识。

  2. div布局相关的知识,涉及双翼齐飞,盒模型等。

  3. javascript同步异步的输出顺序问题。

  4. 关于Promise的then,catch,reject,all,race一些api的用法问题。

  5. 一道关于动态规划的算法题。

  6. 一道概率论关于摇硬币正反面概率的问题。


问完后,接下来又做了一套题...


这一套关于nodejs的,主要涉及流(stream)与Buffer,事件触发器(EventEmitter)等相关模块的认识与使用。这一套基本满分通过,因为之前专门学习过这几个模块,接下来进入二面。


第二面

面试官是一个漂亮的妹子,但是非常犀利,上来做了自我介绍后,直接进入正题。

  1. 可以手写一些Promise么?不是写Promise怎么用哦,让你实现一下Promise。^O^

  2. nodejs中的异步回调中的错误怎么处理。

  3. 闭包为什么会造成内存泄漏?

  4. javascript的垃圾回收机制讲一下。

  5. 了解express的内部原理么?简单实现一下。

  6. 写一下希尔排序算法,注意空间和时间复杂度。


第三面

由于三面面试官出差,中间隔了一周多。后来约到面试后,一位非常年轻的小哥,大概刚30左右的样子,很儒雅客气。

  1. 从页面输入一个链接到加载成功过程中发生了什么,尽可能详细。

  2. https相关原理,涉及中间人攻击,证书协议,加解密内容。

  3. nodejs的运行原理,有哪些优缺点?对nodejs怎样的看法?

  4. 之前项目中的一些总结。

  5. 聊了一些关于他们正在做的事。


面试体验很好,HR也非常nice,拿到了满意的offer,最终因为其他原因没有去这边,HR和三面面试官也非常客气的跟我说,后面想去还可以联系他,非常满意的面试体验,为头条打波广告。



五. 某金融巨头


说句老实话,面试其实不是非常难,而是简历太不容易能被捞起来,而且我是一年半的,团队基本招3年起步的,我是通过内推渠道才被推到团队的,后来进来发现,这简历是真不容易能被捞起来,全程一共两面技术。


职位:前端/Nodejs工程师


第一面

  1. 前端模块化,使用过的打包工具有哪些,打包原理,关于webpack多一些。

  2. 简历有做过断点续传的一些内容,问了一些断点续传在实现方面的一些内容。

  3. cookie与session原理,还有token相关的一些内容。

  4. React的使用经验,react-router的内部原理解释。

  5. XSS,CSRF攻击过程,前端怎么去防止这类攻击。

  6. nodejs的事件循环怎么理解?事件循环里各个阶段的认识。


第二面

  1. Nodejs的内部运行机制,异步非阻塞IO与事件循环原理,事件循环中的每个阶段描述。

  2. 前端数据流管理工具用过哪些?解释一下这数据流管理工具出现的原因,解决的问题和它的本质原理。

  3. redux这一类的工具在解决什么问题,它的本质原理详述。


  4. 在使用开源框架的时候有没有发现一些坑,如何去处理这些坑的。

  5. 做过的所有项目简单梳理一遍,有哪些收获和心得描述一下。



总结一下

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想来蚂蚁这边,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。


如果对你有帮助不要忘了分享给你的朋友哦!也可以关注作者,查看历史文章并且关注最新动态,助你早日成为一名全栈工程师!