暂时告别牛客,回馈社区。百度、美团、搜狐等前端面经集合
末流985计算机专业,学了一年多,本身很渣,边面试边提升。
秋招后去了北京百度,女朋友签了深圳。就为了爱情继续奋战春招(她南方人不想去北京,不喜欢气候),我去了深圳现在的小公司,虽不完全满意,但可能真的没有十全十美吧,佛系了佛系了(虽然后来觉得异地也没啥。毕竟刚刚认识,异地两年再发展也没啥。又不婚前同居,即使我去深圳也估计一个月一见(周末加班),和异地没啥区别,留百度两年后在找她其实也是很好选择吧,不过都过去了后悔没用)。把秋招后期和春招的公司的面经都发出来,大多数都过了。希望帮到大家。
秋招前期的公司面经:https://www.nowcoder.com/discuss/36354
可以回答一些我能回答的问题。祝大家顺利,么么哒!
搜狐春招
一面(60分钟)
1.vdom原理,为什么性能好, diff算法。最后也要用dom的api,直接操作不效果更好为什么还要用v-dom
2.游览器渲染过程,重绘和回流是什么,发生在何时,那些情况引起,如何优化
3.两栏布局
4.css做一个进度条动画,进度条左右是带弧形的(不会)
5.css菱形,translate的矩阵是怎么算的(没答好)
6.原型链
7.this指向
8.作用域,对const的值修改会输出什么
9.闭包
10.堆栈、js那些在堆那些在栈、垃圾回收。给了个过程与对象分别使用两种垃圾回收机制判定。内存泄漏。能否用编译原理解释闭包与垃圾回收。
11.正则匹配一个邮箱
12.获取页面元素位置与宽高
13.对象继承
二面(90分钟)
估计一面面试官出去告诉二面我css不好,于是二面一个css问题都没问我。
1.输出以及为什么
Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p = new Person(); console.log('p.a: '+ p.a); // p.a: undefined console.log('p.b: '+ p.b); // p.b: b
2.输出以及为什么
const person = { namea: 'menglinghua', say: function (){ return function (){ console.log(this.namea); }; } }; person.say()(); // undefined const person = { namea: 'menglinghua', say: function (){ return () => { console.log(this.namea); }; } }; person.say()(); // menglinghua
3.输出以及为什么
setTimeout(() => console.log('a'), 0); var p = new Promise((resolve) => { console.log('b'); resolve(); }); p.then(() => console.log('c')); p.then(() => console.log('d')); console.log('e'); async function async1() { console.log("a"); await async2(); console.log("b"); } async function async2() { console.log( 'c'); } console.log("d"); setTimeout(function () { console.log("e"); },0); async1(); new Promise(function (resolve) { console.log("f"); resolve(); }).then(function () { console.log("g"); }); console.log('h');
js事件循环机制。node与游览器端区别。每个事件发生在何处。(区别没答好,其他ok)
2.写一个构造函数,实现class里的#开头是私有变量(说了匹配与模块模式实现私有变量,没改写get()方法所以被说有问题,经过提醒知道了,算是最大的收获)。
3.用gulp写插件编译这个语法到ES5能不能写出来。(操作AST就行了,应该没问题)
4.实现async(不会,实际是promise语法糖)
6.promise异常处理,实现promise
7.单页应用中游览器url跳转变化了,但没发请求是什么原理,怎么实现的(说了spa路由及原理)
8.http缓存机制,localStorage、sessionStorage。能不能用本地缓存实现类似http缓存机制。indexDB和webSQL。手写连接查询SQL语句。(没问题,能实现)
9.开发者工具中,关于性能的有哪些参数。怎么用。怎么计算首页时间。
10.正则匹配http://www.sohu.com/ 中的主域名(?=即可)
11.反转单链表(写了个递归的)
12.单元测试,敏捷开发与测试驱动开发
13.前端安全的了解:XSS、CSRF、点击劫持、canvas破解验证码,前端sql注入
14.PWA了解多少
15.react生命周期。你不会?会什么。vue,那vue生命周期吧。
三面(20分钟)
1.linux文件系统(不会,一出来记起来就是ext2,ext3,fat32那些东西)
2.FIFO、LFU、LRU缓存换页算法
3.进程线程,线程通信
4.画出OSI七层,TCP/IP四层
5.TCP和UDP区别,三次握手四次断开,为什么握手三次,断开四次;TCP的可靠性如何实现;TCP重传机制怎么实现,TCP拥塞控制有哪些;能不能用udp实现tcp
6.CSMA/CA协议(不会)
百度秋招
一面
1.考察闭包作用域和this指向
2.html语义化含义,优点
3.行内元素与块级元素,区别,举例,属性上的区别
4.三栏布局
5.盒模型,盒模型互相转换
6.css选择器,选择器优先级计算,也谈了谈less的特性
7.解释闭包,优缺点
8.快速排序
9.字符串反转算法
10.正则表达式匹配一个邮箱,邮箱只允许.com与.cn
11.event对象封装,就是个观察者模式
12.跨域,详细问了cors相关的响应头,webpack的配置
13.首字母大写算法
14.get,put区别,什么是幂等
二面三面一起面了
1.数组去重
2.n个元素m个最大值,要求复杂度O(n)算法
3.字符串算法。用正则秒了后,被问正则的原理,状态机?几种正则的引擎的对比。(曾经研究过,这波show time了)
4.设计前端业务以及架构,技术选型,框架对比,函数式编程和OOP区别,你这提到OLPP是个啥东西,前端和后端相比你认为两者区别
6.数据库范式
7.怼了一通http,依旧很顺利(《http权威指南》+《图解http》基本就万能了,第二本书我看了3遍第一本书看了1遍)
8.又一个算法,一个多个数组相关的,具体忘了,反正没写出来
9.又一个算法,又写错了,被面试官指出来后改对了,然后说面完了。当时觉得凉凉后来没想到给过了。
春节后实习了一个月,最后走了。
美团
一面
1.vue组件通信
2.spa应用,v-dom,diff算法,mvvm,组件化开发
3.水平垂直居中
4.margin坍塌
5.事件模型,捕获与冒泡,哪些事件没有冒泡,没有冒泡的原因是什么
6.事件***,中间一个不需要事件怎么办,***的元素内部还有元素怎么办
7.input事件传播
8.tcp过程,http过程,两者啥关系
9.http报文组成,讲了大概二十个字段,很多被问的很细,比如cookie设置哪些,生命周期,http-only,又追问xss。connection取值。缓存机制相关的,哪些字段是游览器缓存哪些是***服务器缓存优先级如何。(当年实习招聘腾讯问我这个问题,我答得很烂葬送了腾讯实习机会,后来把HTTP弄了个熟,看了遍HTTP权威指南)
10.node的Stream和Buffer区别。
11.跨域问题。手写jsonp。说说***服务器具体那种。
12.原型链,当时没讲太清楚,面试官没理解,后边面试官说,算了,我觉得你应该搞懂原型链是啥,你讲讲{},[],Array,Object这死者啥关系吧
12.原型A,原型B,让C继承A也继承B。
13.咋学习的
二面
运气不好遇上压力面,不断的质疑我的答案,我的经历,最后没抗住外加基础不好挂了可惜了,本来很有机会,一面全会。
就三个问题面了一个小时
1.怼了半天项目。具体问了项目里的前端优化,然后我说完方案后问原理,问websocket原理,lasyload组件咋设计,考虑哪些因素,你最后优化了多少,首屏加载时间怎么算出来的。最后你这个内部方法单元测试用例怎么写。这个被怼的很惨。
2.网页上边出现广告的现象见没见过,什么原因。我说不知道,面试官说XSS可以实现不,我说肯定可以的。又问了问xss的东西,后来他说是不是XSS,我说肯定不是,之后引导我思考url全过程,会在哪一步出现问题,就猜想是改DNS,然后说运营商搞的。DNS,UDP,HTTP,HTTPS,IP等一系列网络协议从原理到作用和细节问了个遍。我说是不是DNS劫持,后面试官说你推测是对的,想想怎么解决这个问题,不会。回去你可以查一查。
3.给了个作用域和this的题,
面试结束
追一科技春招
最后选择去了追一,面试面的很舒服,比较多自己擅长的。虽然我后来也喜欢看和擅长的计算机网络,操作系统这种底层的没被问到太多,有点小小遗憾。
一面
面了差不多一个半小时,没有自我介绍,全程回答问题,面的比较基础
1.vue.js的v-dom的理解
2.双向绑定实现;观察者模式是什么;MVVM架构又是什么;getter和setter发生在哪个阶段
3.diff算法,树的遍历,为什么复杂度是O(n)
4.单页应用路由原理
5.url中#号作用,带#号会不会发生请求出去
6.vue中create()和mount()的内部区别
7.vue中methods和computed的区别
8.js基础数据类型,判断
9.Set和Map的区别,常用来做什么,底层实现
10.ES6箭头函数,怎么样,内部变量的作用域
11.splice()和slice()有什么区别。如果要实现替换一个值,选取哪一个并且如何传参。
12.如何改变this指向;call和apply的区别;实现bind
13.创建对象的方法
14.es6的class...extends是那种继承方式的语法糖;es5的实现代码
15.垃圾回收算法;两种算法分别在哪些引擎上被采用;标记清除法是如何内部处理循环引用问题的。
16.闭包;闭包的作用;模块模式的实现
17.跨域的方式;cors设置那几个头;简单请求和复杂请求的区别;复杂请求发送了几次请求;第一次的请求方法是什么;jsonp的原理;webpack是那种方式实现跨域的如何编辑配置文件
18.数据结构中数组和链表的区别;翻转一个数组;翻转一个单链表呢
19.cookie和session的区别。如果后端存储了多条session,哪条有效。如果expries有效时间也一样呢?
20.node.js的高并发原因;node.js异步的顺序
21.express框架和koa框架区别;ORM用过没有何理解
22.实现两栏布局,要求采用absolute的方式
23.重绘和回流?那种发生后肯定会影响另外一种?分别发生在页面解析过程的哪个步骤?引起回流的情况?如何优化?
24.flex布局有了解吗?如何实现水平垂直居中。如何实现多列盒子等距
25.除了flex还可以怎样实现水平垂直居中
26.position的取值,各种的区别
27.bfc是什么,可以做什么;margin坍塌具体那样的
28.padding-box和border-box的区别
29.304状态码。http底层是哪个协议。
30.xss
二面
面试官是前端leader,后来成了自己的leader
1.单页应用存在问题
2.性能优化,具体说说SSR
3.前端安全,CSRF与XSS
4.扫码登录业务设计。登录端除了websocket,还可以如何?轮询。
5.项目细节,技术选型怎么选
6.一个智力题
7.linux查看目录大小命令。linux的nginx配置。vi编辑器到末尾的命令
三面
前腾讯T4面试的,比较偏自己的看法。
1.闭包。模块模式及对设计模式的理解。内存泄漏。垃圾回收机制。对ES6的新特性理解。
2.对前端应用开发的理解。
3.性能优化与安全。
4.前端工程化的理解。
追一给的不高,勉强够了,有时候选择很奇怪,我都怕自己后悔,但现在已经这样,大概一个月前签约后就不打算继续面了。我一直想去腾讯,但腾讯一直没面我;白金内推了今日头条,头条一直没面我。深圳也没其他公司招人了,就去追一了。
顺便帮东家招人,社招前端,java,机器学习都可以联系我。2年以上经验,基础好的1年也行。我内推的两个人已经入职了。
华为秋招
面的真水,给的还高(给我后来开了17000),至今没打破最简单面试的难度记录。
面试要点:不在意多有料,但一定要能把Low的东西吹好,当然前提基础扎实不然那种超级简单的必背面试题打不出来神仙也救不了。二面要告诉面试官你想去哪里,面试官会分配你部门(一面面试官透露给我的,说你想去华为云的话和二面面试官聊聊,后来果然被分配到华为云)。
一面
1.三次握手四次断开为什么三次为什么四次
2.线程死锁,线程安全,解决死锁,线程通信,进程线程区别
3.垃圾回收,堆和栈区别
二面
1.项目
2.前端存储
3.前端和后端都关注性能优化,异同点是什么
后来华为云计算的一个leader加我微信谈了好几次人生,画饼,说来华为很赚钱,你待几年就有钱了,而且现在给的也不低了(周围华为同学大多14k,我高几k),绝对不随机岗位,保证你自己选择,前端和后端都行。但还是种种原因没去。
一加科技
一面
1.线程进程协程一堆老生常谈的东西
2.TCP三握四断,重传机制,可靠机制,拥塞控制。对面试官说我要不手写tcp报文结构然后慢慢讲,面试官说不用了。
3.HTTP各个版本区别。HTTPS12次握手。RSA加密原理。
4.这时候我问感觉面的前端内容好少,面试官说我不是前端是后端,我说那就面后端内容吧,我可以试试回答的。
5.nginx高并发原因。
6.实现一个电商秒杀系统。功能上后端redis消息队列做中间件,数据库请求要非阻塞接入层,前端消息拦截过滤限流限请求次数。架构上rpc,集群。面试官说你一个前端,这后端架构哪里学的还懂的挺多的,我说没事听后端的老哥大佬们吹比就学会了,然后一起哈哈了下
7.然后吹比说操作系统对后端架构设计影响很大,异步啊、线程安全、锁之类都是系统来的。然后问我看过操作系统那些书,我说除了课本外,只看了《深入理解计算机系统》,面试官也没咋问具体内容,听玩吹牛就说他这边没问题了,然后建议我以后做后端得了
二面
1.一口气怼了23种设计模式,手写了单例、状态、***、观察者、职责链。面试官问哪里学的,我说四人帮那本c++的书看不懂,我看了腾讯一个人出的《javascript设计模式》那本书和《javascript模式》。然后说写的多了,就发现以例子学学的熟悉,比如***从时间***理解、状态从表单验证、模块模式从jquery挂载模块,typescript私有变量语法糖实现等等理解,就一下子懂了设计模式,面试官比较赞同。之后说了面向切面编程,js面向对象编程与函数式的东西。
2.这边没问题了,谈了薪水要求和我有啥想问的,我很惊讶问确定没有了,这才算一个问题。他说我们已经俩了快一个半小时了,我已经很满意,希望下次能在公司见到你,我是公司研发总监。
后来一加给了sp,比研究生高的待遇+一小部分期权,最后签约当天前夕追一通知过了,因为没被前端面不清楚那边前端水平的原因,最终没去。但一加公司确实很有诚意,只是希望面试以后可以更加专业和高难度一些才适合。
迅雷秋招
一面
1.自我介绍和实习经历
2.闭包作用域
3.vue双向绑定原理
4.api设计
5.读过的书
6.对后端的了解,着重问了node的一些特性
7.http的理解
8.react单向数据流的理解
9.nginx异步非阻塞特性
10.对象的访问器与数据属性
11.前端安全的理解
12.冻结对象、不可拓展对象、密封对象
13.看过那些书,对现代前端怎么看,你认为那种人是很强的前端和很强的工程师
一面还是很基础的,我基本全部答上了,面试官当场就说进入二面了,明天面试。
二面
面试官说自己以前是我实习公司深信服的前端,后来知道是隔壁ssl部门的
1.实现一个场景,其中有短视频、允许平移的弹幕、实时聊天,兼容ie9以上。
我提出的解决方案是:css动画完成弹幕;短视频用html5的vedio比如flv.js这种开源方案;实时通信有几种解决方案:websocket、短轮询、长轮询。
里边问的比较深,具体到Http协议和api的使用,自己很多地方没有实现过所以经验不足但这块总体答的还行。弹幕的一个匀速动画问题,被搞的很难受,我真是不擅长写动画。
2.es6的一堆语法:生成器,迭代器,元编程。嗯,都是es6里比较晦涩的部分。
3.for...in...、for()循环、forEach循环的区别,为什么有了前两个还要加forEach。
国信证券泰然九路春招
内推面了国信证券IT部,做量化交易工程师
一面
1.python的语法,以前学过,基本都知道。闭包,genetator之类
2.js的语法
3.性能优化
4.前后端分离
5.golang有没有了解,也没问我具体情况,我说做高并发的,docker是golang写的,头条用这个语言。docker有没有用过,做什么用。我理解是应用虚拟化,然后问了我和操作系统虚拟化区别,操作系统虚拟化原理(cpu分时复用)
5.单元测试
6.量化交易理解(大学自学过金融学,关注过相关东西所以吹牛很占便宜)
二三面是hr面和boss面
基本聊公司产品,家庭,个人。
最后给了offer,待遇很高,饼也大,动心了,为了技术发展没去。别人都说我会后悔,说量化交易开发也就这一次机会而且起点要求很高。我觉得我还是适合做个小码农。去哪不是一样。最后拒了。
平安科技春招
问的很简单,都是常见必背面试题,过了
1.项目经验
2.js闭包
3.页面渲染流程,重回回流,display:none
4.跨域
5.在浏览器输入一个网址,点击访问会发生什么事情
6.tcp与udp区别
7.什么是语义化HTML,有什么意义
8.游览器存储方式
9.arguments是什么,什么作用,你提到的科里化是什么,函数式
#前端工程师##面经##百度##春招##搜狐##美团##平安科技#