18年求职面经及总结

18年求职面经及总结

个人求职之路差很少走到尽头了,感受真是精疲力尽了.把这大半年的经历和面试总结写下来,但愿能给和我同样在求职路上煎熬的人一点帮助.css


先说背景:微电子科学与工程专业,学过两门和CS相关的课程:c语言和单片机.这个专业的惟一好处就是:大部分人并不知道这个专业学什么,觉得和电信差很少.因此在众多野生程序员中也算一丁点儿优点,哈哈.本专业适合读博,大三开学决定不去读研了,转CS作前端.这也算是一个我很菜的借口,能够自我欺骗一下.html

求职经历:
三月份开始投简历找实习,发现本身真是菜的一无可取.一开始就是腾讯和阿里的内推面试,被虐的体无完肤,(事件模型,原生XHR,this等等都答不上)因而开始疯狂恶补前端.大三下课程巨多,买了一块新电池,上课坐在最后边敲代码.遇到稍微知名一点的互联网公司就投简历,不停面试,每次面试完赶忙记录面经,总结经验,查漏补缺.前端

就这样一直熬到四月份,开始渐渐可以从容应对前两轮技术面.五月初,拿到美团和头条offer.本身几斤几两仍是拎得清,这两个offer多少都有运气成分,因此并无多高兴.每次刷别人面经,看到本身那么多答不上就很慌乱,因而依然不停投简历,不停面试,为面试积累经验.vue

去了美团实习的经历很愉快,上班比较轻松,leader人也很好,有相对多的时间学习而不是沉迷业务.提早批开始后,就开始刷面经,准备面试.一个月以后拿到留用意向书.node

后边投的公司很少,除了Face++,给了面试机会的公司基本都能走完全部面试流程,头条,百度,美团,好将来,快手,华为都给了offer.虽然有些最后并无给offer,可是这个状态也勉强过得去了.react

因此啊,努力老是会有成果的,还在挣扎的同窗千万别放弃了,总有柳暗花明时.


面试心经:
互联网一二线公司基本上都面过,总结一下面试技巧.
综论:我的觉得,技术面通常遵循DFS查找原则,先找一个点切入往深处探底,直到你答不上来,而后开始考察相近知识点,再接着探底.最后综合评判一我的水平.
所以,你掌握的知识体系必须既有深度又有广度.但,这是不可能的.webpack

一. 学会主导面试问题走向和适时展现本身技术深度是很关键的一点.css3

举例来讲,你花了足够时间研究了HTTP/2,基本上对它了如指掌.那么面试官一旦问到计网或者性能优化或者HTTP,HTTPS,你就要想办法引导面试官问你HTTP/2,而后展现你的功力.

二. 学会回答问题:nginx

面试问题分三种:
第一类,你遇到过而且熟悉的,这时候不要开心,要控制好回答节奏,避免面试官以为你恰好撞上.
第二类:不太熟,简单解释,避开可能让你入坑的词汇(好比问react你非要说diff,可是写不出diff算法).
第三类:不会,直接说本身没接触这方面,不装懂.若是是非知识性问题,能够推理一番,体现你的分析能力.

三. 应对总监/经理面:程序员

通常技术问题较少,多职业规划和过去经历总结.我的觉得这里最重要的是要让面试官以为你是个颇有潜力的人,之后会是一个优秀的程序员.能够用本身的经历佐证你热爱技术,喜欢探究原理,作事可以锲而不舍等等,表现你具有优秀程序员的品质.应对其余问题慎言就好,出口以前先想好.
除此以外,我看过美团面试评价表,他们也在意一我的表达能力,思惟能力,以及我的素质.因此适当注重我的软实力也能够弥补技术上的不足.

关于应对前端面试,创建完善知识体系:

基础:
MDN/w3c文档基本过一遍.就不会在HTML,CSS基础问题翻车.掌握《JavaScript高级程序设计》就能够应对大部分JS问题.(犀牛书固然也是同样).而后就是套路型基础问题,这个多刷刷面经就知道了.

进阶:

  1. 《HTTP权威指南》,掌握HTTP1.1 HTTP/2 HTTPS的各个特性
  2. JS系列: 《你不知道的JavaScript》,讲解js难点问题.曾探的《JavaScript设计模式》,《JavaScript函数式编程》.
  3. 算法,推荐《JavaScript数据结构和算法》
  4. 下面总结前端主要知识点:
  • HTTP相关,尤为与网络性能优化相关
  • 缓存相关,各种缓存控制方式以及CDN
  • 本地数据存储,cookie,ls等等以及pwa
  • 渲染相关,浏览器渲染机制,加载顺序,优化点.SPA白屏等等.可
  • ES6相关,异步函数及其底层原理,推荐阮一峰ES6教程
  • 性能优化,包含东西比较多,不只要掌握作法更要知道原理.
  • 设计模式,怎么写,优缺点以及应用场景.
  • web安全,XSS,CSRF,SQL注入具体原理和防范措施
  • webpack相关问题,打包原理,模块相关.
  • CSS3和HTML5相关
  • 跨域的处理方案以及原理
  • 即时通讯方案以及原理
  • 三大框架相关问题,vdom,数据绑定,diff之类.

下面记录面试过的公司的面经:

阿里腾讯以及外企都是直接刷简历,没给面试机会.心塞.
我也很绝望啊, who let me so vegetable !

搜狐提早批

两轮技术面
(7月份搜狐大厦,问的都比较简单,只记得这么多)

  • BFC
  • Flexbox用法,详见总结
  • 排序,找出最大三个数
  • 快排原理,复杂度计算
  • 继承的实现方式,详细问了建立实例对象的内部过程.
  • vdom原理,实现
  • 异步原理,macrotask和microtask,写了总结

360 奇舞团

两轮技术面+HR面,当时没记录,只记得没答上来的问题

  • webpack刷新原理
  • server push和websocket
  • url长度为何受限制
  • XHR如何传递二进制流

百度大搜和度秘

百度内推面了俩部门,前先后后总计面了六轮,没写全,问的问题太多有些也记不清了.


大搜

大搜在百度现场面.三小时面完三轮.(荒郊野外真远 -_-

  1. 一轮面试问的都比较基础
    例行自我介绍,随便问了下美团实习项目,而后开始考察基础.
    Q:先讲讲JS继承,后边有白板,能够画画.
    讲了一下ES5继承和原型链,写了ES6的class示例.
    Q:作过性能优化没,讲讲性能优化
    大概说了传输,渲染,缓存的优化
    Q:通常怎么排查性能问题
    chrome面板,balabala.其余第三方工具
    Q:cookie,localStorage有些什么区别
    就记得这些了,基本覆盖大部分基础知识
  2. 二面超严肃
    例行自我介绍,问了问项目.
    Q:学校课程(本专业没有任何CS相关课程)是些啥?
    Q:数据结构了解多少,讲讲前端上用到的
    堆栈,队列,hash table,DFS(挖了一个坑)
    Q:如今给个DOM,写个DFS查找里边的全部文本,打印出来
    白纸上大概写出了样子,可是明显有BUG
    Q:递归是什么原理,需不须要设置显式终止条件?
    答不出来
    Q:给个数组,把这个数组每一个元素放到一个l列表格里,打印表格DOM结构
    写了一个两层循环
    Q:讲讲URL到页面过程
    balabala
    Q:HTTP创建是什么过程,详细点,是长链接吗?
    Q:HTTP报文和回文内容包含些什么
    Q:XHR怎么发的,具体怎么创建的,和HTTP有什么区别
    原生XHR讲一遍,区别不了解
    Q:XHR上传文件和其余数据有哪些区别?和HTTP传数据有什么不同?
    文件上传用formData.
    面试官XHR传数据会base64编码
  3. 三面 经理
    除了聊人生外:
    Q:你这项目里canvas绘制散点曲线怎么解决的?
    高阶贝塞尔曲线拟合,计算控制点.也能够最小二乘法计算.
    Q:为何不看看其余开源项目好比echart源码?(我用过echarts)
    当时没有这么高觉悟.
    介绍了网页搜索部前端组业务,整个部门只有一个前端组,貌似加班.

度秘

电话面试,两天面完

  1. 一面
    例行自我介绍,对着项目问问.
    和大搜一面差很少
    此外还问了:
    Q:如何实现继承
    高程继承背一遍
    Q:实例化对象是怎么样的过程?
    Q:构造函数上有哪些属性?
    length,其余不了解
    Q:构造函数的prototype指向什么?和实例对象的prototype有什么关系?
    Q:这里边this是什么,其余地方用途
    Q:bind和call有什么区别?
    Q:排序算法怼一波,复杂度怼一波
  2. 二面
    例行自我介绍,项目问的更深.
    Q:ES6了解哪些,一个个细问?
    Q:异步通常用什么?
    promise,顺便让讲了promise细节,以前作过总结
    Q:ES6 module怎么实现的,和require区
    Q:for of 和for循环有什么区别?
    Q:canvas监听点击事件怎么实现
    获取触发位置,计算是否在所绘图形范围
    Q:其余写法吗?canvas有没有相关接口
    他说有,isPointInPath(),这个我忘记了.
    Q:web安全知道哪些?
    Q:Csrf怎么防范,验证了origin和refer是否能彻底避免?
    并不能彻底避免
  3. 三面
    例行介绍,问了学校三年状况,在团队状况,实习状况.
    而后话题一转,英文怎么样,我是据说不行,读写还行.
    而后全程英文视频面(流汗
    面试官自我介绍,而后开始问.
    英语确实烂,想说的说不出来,好尴尬.
    面试官比较厉害,南大本科,国外留学硕博,创办AI公司被百度收购就来这.
    我要是作NLP就行了.当过CEO的人真是有魅力.
    后边面试官给了一些职业规划和学习上的建议.

头条一面(内推)

三轮技术面,一下午完成.
牛客视频面,上来就是写题.
第一题写url转置,www.toutiao.com => com.toutiao.www
转换成数组,而后换位.
面试官说,不用API,像c语言同样写怎么办.
查找全部.,记录index.根据index数组长度,循环交换每两个相邻index以前的片断.
面试官说这里交换用到了temp临时变量,js不用临时变量而交换值该怎么写呢?好比交换ab值.写个函数试试.
想了一下子,尝试写一个柯里化函数解决,可是没写出来,面试官提示ES6.
我的以为这题好偏,除了解构,用arguments和对象都能实现.

[a,b] = [b,a];
  {    
       a:b,
       b:a
   }

接着考察css,要求写一个搜索框,右侧搜索按钮固定宽度,左侧自适应.
写了一个absolute定位,浮动布局,css3 calc,css translate设置宽度.
而后大体讲了用flex布局.
中间问了哪些元素默认是inline-block,解释与block,inline的差异.
面试官接着上边问css3有哪些新特性?
问到了动画,就细细问animation,我说动画不熟.中间提到了css3性能,
接着问2D和3D动画性能上有什么差别?这个不了解,说了有些能够触发GPU加速,渲染性能有必定提高.
面试官又问动画的GPU问题,这就答不上了.

头条二面

很少说,写题.
bind函数实现,这个不难,一下子写完了.主要是考闭包和arg,另外记得先检测bind是否存在.
面试官说不完善,bind绑定对象以后再去调用传参怎么办.
获取arguments传入返回的函数.
而后出了这个题:

最多存储n对KV;若是大于n个, 则随意剔除一个已通过期的KV;若是没有过时的KV,
则按照LRU的规则剔除一个KV;查询时若是已通过期, 则返回空;

没学过算法彻底看不懂.
而后开始问性能优化,从域名服务开始,到HTTP传输,到加载和缓存,再到渲染,再到代码优化,一步步详细讲解.
中间面试官打断HTTP,问HTTP/2有哪些特性?
讲了多路复用和server push.
而后问HTTPS过程
讲了HTPPS创建链接,证书加密过程
面试官又问简历HTTPS链接以后传输数据怎么加密?
面试官问雪碧图为何能优化性能?
答减小HTTP链接,一次性传输,HTTP有并发限制
问HTTP为何限制并发,我说多是避免资源占用过多.
问要是非要一次性加载100张图怎么办?说不知道,知道的CDN也不能解决.
面试官问HTTP2多路复用是什么?
创建一个HTTP链接,传输多个文件.
问那雪碧图优化点在哪里?还有别的么?答不上.
(其实雪碧图把多张图合并,必定程度上减少了体积,单个图片要包含不少无用信息,可是在HTTP层的优化能够被多路复用替代了).
HTTP在OSI哪一层? 应用层
详细说哪七层?
在渲染优化上问了函数节流,并让写了一个节流函数.
在代码优化上问了queryselectAll和getBy的区别,
还问了mouseenter和mouseover的区别.

头条三面

三面主要问项目和实习,遇到了考察点就追问到底.
没什么具体印象了.
如下为血的教训:
又问了OSI,
依然不会.
面试官:中间隔了一个小时,你就不去查一下吗?
我:.....

滴滴一面

上来一个定时器异步的for循环题,问了一下结果要求解释.没啥难度,就是要细心.
而后是一个很长函数调用的题,主要考察this指向,做用域链,原型链和call.一不当心会掉进坑里,我给告终果,顺便深刻讲了一下分析过程.
接着是一个模板解析函数,给一个mustache风格的模板和一堆参数,要求编译模板并输出.白纸手写.
大概画了几笔,发现判断模板是否合法写不出来.而后接着写mustache替换.
告诉面试官本身的想法和遇到的难题,面试官趁势对着代码问了一些问题.
面试官又问了一下事件代理,
大体讲了这个东西,顺便解释了事件模型和性能优化点.
而后让解释url到页面渲染的过程,
大体说了整个流程.
接着问css和js加载的差别,主要考察js阻塞问题.
而后问domready和onload区别,这点不是很清楚,答得很差.
中间提到了HTTP/2,因此面试官又让细说http的各个版本.
讲了http1.1特性.http/2的二进制分帧,多路复用,server push以及性能优化做用,而后讲了https加密.
面试官接着问HTTPS流程和细节,详细解释了HTTPS证书加密过程.
面试官让HR领我出去等二面.
滴滴给人面试体验太差了,因此放弃面试了.

快手

快手HC不多,面试也有点难,薪资还不错,面完了以后去办公室看了看,感受挺不错的.
讲讲这家略神秘的公司面试流程
一面是基础技术面,将前端的方方面面都问了一下,给了一些算法题和技术场景,让给解决方案.
二面(前端主管)基本全程在线coding,题目记不清了,四五道题难度有高有低,写了整整一个小时代码.后边是半小时前端技术面,基本每一个点都会问到问不下去.
三面是部门Leader面(先后端主管),HR后来讲三面考察智力,反应速度和学习能力,问了一些算法和智力题,给了一个UML图应用实例,让设计一个停车场计费系统的UML示例图.
四面是HR面,乱七八糟问了一通,学校状况啊,实现状况啊,我的性格啊什么的.

说说不仅是500强的面试

春招实习的时候没有offer,因而投了菊厂试试.笔试,性格测试混混就过了.两轮面试,问了一些学校的项目经历和关于c语言的问题,其余都是在聊天.而后莫名其妙就过了面试.
秋招直接进终面,也没有问任何技术问题,40分钟也在瞎聊天.而后就拿到offer了,感受没有比华为更简单的面试了?.薪资通常水平.


附录:

下面是其余公司的一些面经:


腾讯一面

  • 1.浏览器工做原理
浏览器的主要组件包括:
用户界面- 包括地址栏、后退/前进按钮、书签目录
浏览器引擎- 用来查询及操做渲染引擎的接口
渲染引擎- 渲染界面:Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit.
网络- 用来完成网络调用,例如http请求
UI 后端- 用来绘制相似组合选择框及对话框等基本组件,具备不特定于某个平台的通用接口,底层使用操做系统的用户接口
JS解释器- 解释执行JS代码
数据存储- 属于持久层,浏览器须要在硬盘中保存相似cookie的各类数据
  • 2.Web安全,举例说明
  • 3.状态码
  • 4.同源:同端口,同域名,同协议
  • 5.对象继承
  • 6.ES6历史以及新特性有哪些?
  • 7.promise原理
  • 8.事件模型
  • 9.常见兼容性问题,列举(移动端/PC端)
  • 10.性能优化   

阿里一面

  • 1.Ajax原理
  • 2.浏览器解析过程
流程: 解析html以构建dom树->构建render树->布局render树->绘制render树
参考文章
  • 3.垂直居中
  • 4.数据类型判断
  • 5.路由实现
  • 6.数据本地存储
  • 7.跨域 参考
  • 8.数据双向绑定单向绑定优缺点

阿里二面

  • 1.无线性能优化
  • 2.Tap事件,Touch
  • 3.数据存储

搜狐一面

  • 1.Dom操做
  • 2.移动布局方案
  • 3.先后端协做
  • 4.原生Ajax实现过程

搜狐二面

  • 1.单链表反转
  • 2.快排
  • 3.即时通讯(除了Ajax和websocket)
懵逼了
总结一下其余方式
1.Comet技术:基于HTTP长链接的Web端实时通讯技术
2.SSE:服务器发送事件,使用长连接进行通信
  • 4.服务器代理转发如何处理cookie(nginx)
  • 5.对象继承
  • 6.this
  • 7.rem布局的优缺点

腾讯Alloy Team

一面(记录两个,其余都还好)

  • 实现动画有哪些途径

    • CSS3
    • JS帧动画,定时器,requestAnimateFrame
    • Canvas动画
    • SVG
    • 图片
  • 对象继承的实现

二面

  • web安全

    • https加密过程,证书用途
    • xss几种形式,防范手段,过滤哪些字符?
    • xsrf原理,实例,防范手段(Laravel的token)
    • Sql注入
  • 性能优化

    • 代码优化(html,css,js)
    • 网络性能优化:

      1. Cache缓存之强制缓存和协商缓存.看具体详情
      2. CDN原理及应用
      3. HTTP压缩
  • 上下文环境对象
  • 设计模式(要求说出如何实现,应用,优缺点):

    • 单例模式
    • 工厂模式
    • 发布订阅模式
  • 跨域(产生缘由)

    • JSONP原理
    • CORS如何设置
    • Nginx代理
  • 读过哪些框架源码?
  • 如何写一个CSS库,要注意哪些东西?

京东二面

  • JS面向对象之封装,继承,多态的体现和应用?
  • BST
  • promiseAll如何实现,以及如何实现多层异步回调?
  • 加油站问题(贪心算法)

阿里二面

  • XHR具体底层原理和API
  • 单例模式实现/设计模式
  • JSONP原理,回调过程
  • Latex怎么解析
  • hash算法实现,如何避免冲突,如何在冲突里检测
  • Generater
  • ES6怎么编译成ES5,css-loader原理,过程
  • ES6转成ES5的常见例子
  • 常见数据结构,常见算法
  • node多线程实现
  • 进程和线程

阿里三面

  • 对前端的理解
  • 说说rn,weex原理
  • 说说XHR
  • Jq的选择器引擎,$('.a .b')以及$('.a').find('.b')
  • MD5摘要算法其余用途

百度外卖二面面

  • 前端架构的理解
  • 前端框架的见解
  • 如何作先后端分离
  • 在不使用后端模板渲染的状况下,如何作前端数据直出(不使用异步请求数据)?
  • SSR适用什么场景?SPA首屏空白缘由?
  • vue构建过程原理,具体流程
模板到DOM大体流程:
template模板通过parse处理后返回AST
得到一棵AST后再通过generate()生成渲染函数
执行渲染函数后会得到一个VNode,即虚拟DOM
patch函数,负责把虚拟DOM变为真正DOM。
  • vue2新增内容?独立构建(standalone)和运行时构建(runtime-only)的差异和应用?详情
  • 爬虫的实现原理?如何实现一个爬虫,如何解析文件?
  • 如何解决爬虫慢的问题?
  • 多线程如何保障各个线程的安全?
  • webpack工具和node了解哪些?node各个模块的底层原理?
  • CSS3实现卡片翻转?

百度外卖三面

  • 说说职业规划?
  • 说说HTML难点,语义化的体现?
  • 说说CSS重要难点?如何实现垂直水平居中?
  • JS中this是什么?如何改变this?
  • 讲讲时间复杂度计算?
  • 算法题:假定26个字母对应1-26,将一串数字转成字母有多少种可能?
    暴力解法复杂度是多少?

(百度外卖业务:包含移动客户端(RN,hybrid),PC web端,H5,后台界面vue,桌面应用包含编辑器插件,前端构建工具,node中间层)

饿了么

  • 盒模型之box-sizing
  • XHR原理及API
  • session和sessionStorage
  • map forEach(数组各个API细节)
  • dom事件代理,有什么优势?
  • 三种隐藏方式差异:visibility:hidden,display:none,opacity:0
渲染上的差别:
1.将元素设置为display:none后,元素在页面上将完全消失,元素原本占有的空间就会被其余元素占有,也就是说它会致使浏览器的回流和重绘。
2.设置元素的visibility为hidden,和display:none的区别在于,元素在页面消失后,其占据的空间依旧会保留着,因此它只会致使浏览器重绘而不会回流。
3.opacity:0,只是看不到元素,元素依然存在而且占有原有位置.
注:
事件绑定的差别:
一、display:none:元素完全消失,不会触发绑定的事件.
二、visibility:hidden:没法触发其点击事件,有一种说法是display:none是元素看不见摸不着,而visibility:hidden是看不见摸得着,这种说法是不许确的,设置元素的visibility后没法触发点击事件,说明这种方法元素也是消失了,只是依然占据着页面空间。
三、opacity:0:能够触发点击事件,设置元素透明度为0后,元素只是相对于人眼不存在而已,对浏览器来讲,它仍是存在的,因此能够触发绑定事件
动画属性的差别: 一、display:none:彻底不受transition属性的影响,元素当即消失
二、visibility:hidden:元素消失的时间跟transition属性设置的时间同样,可是没有动画效果.
三、opacity:0,动画属性生效,可以进行正常的动画效果. 代码演示地址

头条一面

  1. inline和block元素列举,block和inline-block区别?
  2. span包含12px大小英文'abc',问span高度?baseline怎么理解?
  3. css实现自适应正方形?
  4. string查找第一个不重复字符.若是换成字符串呢?
  5. Angular数据绑定机制?
  6. 重绘和回流的理解
  7. querySelectAll和ByClassName所获取元素的区别?如何绑定事件?
  8. getComputedStyle用法?
  9. addEventListener绑定事件?参数不一样的执行顺序.
  10. 正则匹配电话号码.exec,match,search用法?推荐一篇高质量正则文章
  11. 数据类型判断的方法,toString判断的来源?
  12. ES6 class原理?
  13. function rest参数长度?function.length如何判断与arguments对象长度区别?

头条二面

  • var a;typeof a;let a;考察点
  • mvp,mvc,mvvm
  • vuex原理,watch对象
  • js defer async顺序,模块依赖(AMD,CMD差异)
  • 设计模式和应用
  • session和cookie
  • 清浮动,BFC
  • cookie存储在哪里?(memory)
  • typeof
Null,Undefined,Boolean,Number,String,Object
typeof 只能检测基本数据类型

CVTE面试

  • 四栏布局
  • 数组,数组对象去重
  • 数组查某个字符出现次数
  • 选择器权值
  • 右键菜单定制

Ruff

  • 函数不定参
  • 定时器原理
  • url=>渲染:script阻塞
  • 数据结构应用
  • 数据双向绑定(vue,ng原理)

其余小公司:

  1. 面向对象三要素
  2. 闭包
  3. 三栏布局
  4. 内联元素包含块元素的表现
  5. 三种隐藏方式的区别
  6. 求最大子数组和.
  7. 块元素和内联元素渲染区别?
  8. ul li实现计数.
  9. flex-box用法
  10. svg与canvas
  11. JPG,png图片特色,场景
  12. CSS写轮播
  13. 拖拽组建
  14. PV统计
  15. URL监听变化

笔试

人人网

  • 1.数组操做
  • 2.排序算法
  • 3.动态规划(书包问题)
  • 4.编程题(正则)

CVTE

  • 线程
  • 各种通讯协议
  • 二叉树
  • 算法复杂度
  • 栈封装,利用栈对数组reverse(编程)

美团

  • 各种排序算法以及复杂度计算
  • Node的一些用法
  • 二叉树遍历
  • JS内部属性
  • 页面之间传参
  • 程序题:数组找公共元素

网易

  • 出入栈可能性计算
  • 数组去重
  • 基本数据类型
Null,Undefined,Boolean,Number,String,Object typeof 只能检测基本数据类型
相关文章
相关标签/搜索