想进大厂不可能不做的面试总结(精华篇)

265 阅读8分钟

在面试的过程中,大部分的时间都是已问答的形式进行的,我梳理了下面试过程中经常出现的问题,并且整理分类,通过这些不同类型的问题推测一下校招生应该具备的能力

文章主要分成如下三类问题:

  1. 技术问题

  2. 性格问题

  3. 认知问题

技术问题

面试的问题大致可以分为三种:

  • 记忆性问题
  • 场景性问题
  • 算法题

当然,这种分类也不是绝对的,也有存在不是这两种类型的技术问题,也有各占一半的问题,我只是希望通过分类汇总总结,暴露出自己的问题,然后去解决

记忆性问题

正好针对的是面试者的基本准备和技术素养,如果面试者已经梳理了一遍知识体系,并且对常见问题能有自己的见解和实践,那么技术性问题这里基本可以满分,常见的有记忆性问题有:

  1. 页面从URL输入到输出的过程
  2. HTML5和CSS3新特性
  3. TCP和UDP的区别
  4. 进程和线程
  5. JavaScript继承
  6. 跨域
  7. ...

这类问题基本占一半的时间,从这些问题中就可以筛选出为了面试做过准备的同学,而且这些问题基本都有固定答案,而且有一定的扩展性,不仅能考察同学的基本素养,也能稍微扩展看到同学的潜力,就拿第六题举个例子来说:

面试官:你了解跨域吗?

同学:了解,跨域就是访问不同域名下的资源。

这样的回答就过于简洁,不太能给面试官带来印象,比较完善一点可以先说跨域的原因

同学:首先对于跨域来说,浏览器遵循同源策略判断协议、主机、端口都相同时则为同源,非同源策略站点会限制 XMLHttpRequest 请求;

接着回答跨域如何被拦截

同学:当浏览器发送 ajax 请求的时候,只要当前 URL 不同源,就产生了跨域。跨域请求的响应一般会被浏览器拦截,浏览器主线程检查跨域没有 CORS 响应头,就会将响应体全部丢弃,这样渲染进程就无法拿到响应体内容去渲染页面;

最后详细回答一下跨域的解决方案

同学:我使用过的跨域解决方案有三种:

  • 第一种是 jsonp,通过 script 标签的 src 替换目标资源发送 get 请求,实现跨域并拿到请求;
  • 第二种使用 CORS 规范,通过在响应头添加Access-Control-Allow-Origin字段,如果请求头中origin在这个字段的范围中,浏览器就不会再拦截响应;
  • 第三种是通过Nginx反向代理解决,通过配置server_namelocation这两个字段,让请求通过 Nginx 转发给服务器;
  • 其他的话还有 websocket 不会跨域,postMessage 等一些方式,这些比较偏的方法能提到即可;

逻辑清晰的回答完这些,基本可以看出同学关于跨域的基本技术素养是在的,同时可以对上面的任意一个过程做一个细节的考察,看看同学是否深究这方面,有没有自己独特的理解,实践和理论是否相结合,这些东西,基本问几句就可以看得出来。比如说 taobao.com 和 a.taobao.com 是否跨域,浏览器在哪里拦截响应体,简单请求和预检请求是什么等......

场景性问题

这个针对的就是区分记忆力强的同学和能力强的同学,这些问题的特性就是通过项目的扩展或者单独的拿出一道特定场景的题,常见的有:

  1. 异步请求并发
  2. 实现某某组件
  3. 百度搜索框
  4. 实现某某动画
  5. 如何去实现双端
  6. 项目中的难点
  7. ......

这些题目如果遇到没有接触过的,可以把自己知道的全部都说出来,但其实最好的办法就是引导面试官向自己擅长的部分问答。但是说实话大部分的场景题确实是真实常见的场景,而不是挑一些偏门的去为难同学,所以最好的方法就是多动手,多做项目,多思考,多总结,拿搜索框举个例子来说:

面试官:如果我们要实现一个搜索框实现类似百度搜索,你觉得要考虑什么方面?

同学:我觉得样式要好看点,圆角要设置,这样才能吸引用户注意力;

这样的回答就有点简洁,当然样式的表现是很重要的,但是后面的一些逻辑也要知道,比如说:

同学:

  • 首先要通过 input 框实现输入输出功能,样式要设置美观,这样才能吸引用户眼睛;
  • 其次针对发送的请求返回的结果渲染下拉框,请求要做防抖处理,否则用户打字太快,请求可能会发送太多次;还有使用队列针对请求顺序的实现,请求竞态的处理;

这样回答不仅充分展示了同学的产品能力,还展现了同学的逻辑思维能力,并且这里每个方面都可以扩展,甚至直接手写代码,这样还可以考察同学的业务代码思路和功底,也很好地区分了同学的动手能力

算法题

这个筛选不同层次的:

  • 及格:有思路
  • 良:写出来
  • 优:不同方法写出来
  • 好优:还能优化时空复杂度

性格问题

这类问题的占比也是非常多,虽然不太重要,但是错误的回答会是致命性的,常见的问题有:

  1. 你最大优点/缺点是什么?
  2. 面临的最大挑战?
  3. 组织过什么活动?
  4. 有没有女朋友?(太真实了)
  5. 为什么没有?(我也想知道)
  6. 为什么有?(这还要理由?)

其实上述问题考察点就是如题考察性格问题,性格在工作中是非常重要的,一个能够有担当、擅沟通、负责任、幽默、敏锐等等性格的同学往往能提高很大的工作效率,所谓的正面性格能最大程度上给公司带来最大的效益,所以基本这类问题正常回答就行,举个例子来说:

面试官:你最大的缺点是什么?

同学:我觉得我最大的缺点是拖拉,我在生活中老是喜欢把今天的事情留到明天做,明天的事情留到后天做,就很烦

这样其实搞得面试官也很烦,人家说不定挺认可你的技术能力的,就因为这个性格让他不得不 pass 。其实大家生活中谁没点拖拉,大可不必说出来,而且工作上拖拉才是缺点,如果有这样的同学,尽可能纠正一下,如果仅仅只是生活上有点拖拉,可以婉转的说一些其它的沾一点边的缺点,举个例子:

同学:我认为我自己有点自以为是,举个例子,在我准备九月份的秋招面试的时候,我开始系统地去复习前端整体的知识框架,当时我自以为是地认为这些知识点都应该记到脑子里,只需要反复看就行,也不做笔记,也不整合整理,所以导致我面试的时候很多东西都是断断续续的,不够细节的,后面我反思了一下,确实这是个低效率的方法,而我自己的核心思想就是希望复习前端知识,但是却没有好好思考实现的方法,导致我几次面试的失败。所以我认识到后直接整理博客,整理文章,使用 xmind 记录搭建每天的复习方法, demo 和理论相结合的实践等等。

这样的回答就是比较好的,展示了自己不足的一面,也不是乱说,另一方面也展示了个人如何去处理暴露出来的缺点的过程,这样就又展现了你合格的自我反省能力解决能力

认知问题

这类的问题大都是一些面试前的一个笔试,大致的题型就是文本中心提取,语义分析,图形规律分析等的题目,这些说实话简单的很简单,不简单的真的很难,特别对于技术性同学来说,我就倒在过一次独角兽公司的这种认知测试中。

我觉得这些问题的出现是很正常的,在技术岗位中,技术是绝对因素,那想这种认知问题和性格问题就是相对因素,如果有一批技术综合能力潜力大致相同的候选人,那这些相对因素就能够成为影响因子,只能说好好考了。而且在实际的使用场景中,理解和沟通也是非常需要的能力,理解不就是基于个人的认知嘛。

总结

面试好处多多,失败的同学能够找出自己暴露的问题,然后去解决;成功的同学也能稳固自己的知识体系,做到从容自如。

这个可以算作武功秘籍帮助大家通关,但是成为高手那也是少不了同学平时的修炼,古有祖逖闻鸡起舞,今有面试通宵学习,祝大家面试一路通关,成功上岸。

如果喜欢这篇文章的话,帮忙点个赞,感谢~