秋招结束
感觉自从九月离职就没几个面试....
今天百度二面挂了以后佛系了, 就这样吧
不要我的大厂梦了, 太菜了进不去
今天决定上岸, 国庆回来以后猿辅导和shopee选一个签了结束秋招, 附上秋招以来的面经, 本科前端
百度/京东/美团/深信服/腾讯/shopee/小米/猿辅导/字节跳动
2019-9-21 百度二面凉经
一面
自我介绍
对未来的规划
你觉得你自己水平怎么样
跨域问题
实现输入框校验, 完整思路
浮动元素高度塌陷问题
为什么bfc可以解决这个问题
还有什么其他的方法
实现一个树组件, 数据结构怎么设计
如何遍历这个树
非递归遍历
如何实现树不同层次的缩进
有什么想问我的
二面
自我介绍
实现一个函数, 参数是一个回调函数, 返回一个promise类型的函数
实现一个函数, 参数是函数1, 间隔时间time, 触发次数n, 返回值是一个函数2.如果这个函数2被调用了n次, 并且每次间隔不超过time, 则触发函数1.
es6用过哪些东西说一下
三列布局, 左右定宽, 中间自适应.
实现一个效果, 一个正方形div, 它的宽度是父元素的50%, 只能用css.
这个有什么业务场景(图片)
有什么区别(单纯用图片会导致高度从0->一个px值 引发回流)
实现一个web聊天室你会怎么做
websocket为什么可以实现
服务端最多能建立多少个socket
为什么群聊会有人数限制
我就想要一个1w人的群应该怎么办
跨域问题
cors如何实现跨域(服务端会返回头部信息, 里面会多几个字段)
那这个字段是在前端验证还是后端验证能否跨域?
js: 取一个input框里面的内容, 加到一个div中
2019.8.20 京东提前批凉
一面:
- 先写了七个题
- 实现双列布局的几种思路(一个div, 被两个div撑开)
- 如果flex布局, 如何保证多出来的元素是靠左的
- 删除数组中指定的元素
- 实现一个函数, 能够返回1000-2000的随机值
- 将1000000000变成100,000,000这种
- for循环, 用var声明i, setTimeout输出i 问输出什么
- 循环对象的几种方法, 这几种方法有什么不同的地方
- 对着这七个题问了一些相关的问题
- 浏览器的事件循环
- vue生命周期
- vue父组件和子组件生命周期的执行顺序
二面
- 对着将10000变成100,000的那个题目看了一会
- 实现一个函数, 一个长度为1000的数组, 每个元素都是随机数, 填充完之后去重+排序
- 自己手动写去重和排序
- 看过哪些书
- 手里有offer吗
- 面过哪些公司
- 可以提前来实习吗
- 你怎么选公司
- 如果给你实习offer你可以来吗
- 如果xx和京东都给了你offer你会选哪个
- 一个月之内给通知(备胎之王)
2019.8.13 美团三面+hr面凉
一面
- 实习干了什么, 介绍一下
- 你负责了什么内容
- 平时有bug如何调试
- 讲你一个你觉得改过的最难的bug(我说我在公司就是改bug....)
- chrome的各种工具用过吗, 然后...电脑给你, 对着chrome把用过的全都讲一遍,然后问xxx用过吗, xxx用过吗. 中间还穿插了netword请求里面各种字段, 都是干嘛的
- 你们做的产品兼容性怎么样, 都兼容哪些浏览器...(这个就说了一下没有具体问怎么兼容...)
- 给了一个题. 两列布局, 左侧定宽, 右侧自适应....我给讲复杂了
- position的常见属性, 都说一下.(结果脑子抽风把relative讲成根据非staic父元素定位了, 自己还觉得自己很对...被面试官拿了两个div让我布局才反应过来)
- es6有用过哪些东西
- ...平时用在什么地方
- ...运算符可以解决深拷贝的问题么
- 那你们平时在公司是怎么解决深拷贝问题的
- 遍历数组有哪些方法
- forEach可以改变数组元素么
- 箭头函数和普通函数区别
- 构造函数和普通函数区别
- promise.then(a, b)和promise.then(a).catch(b)这样写有区别吗, 区别是什么
- 给了一段代码看输出, 主要是this指向的绑定问题和promise, setTimeout的执行先后顺序问题, 然后有一个setTimeout this指向全局了, 有什么办法变回来.
- 前端安全
- 如何防范
- 移动端开发有了解过吗?
- 自己做过移动端开发么(给他介绍了一下公司的移动端是拿什么写的)
- 那我可以这样认为你没有实践过移动端?(捂脸:是)
- d3.js有了解过么
- css3实现一个不断滚动的图片动画
- 有什么想问我的(部门业务, 对我的评价)
二面
- 之前做过后端?都用过哪些东西
- 如何改变一个函数的词法作用域(好像是这个...怪我平时太辣鸡了, 后面问了一下, 是改变this指向吗....)
- apply, bind, call有什么区别
- 继承的几种方式
- 手写一个寄生组合式继承
- 为什么要构造一个空的函数作为桥梁
- 你给我举一个不用就不行的业务场景出来
- 水平垂直居中怎么实现, 写一下(一开始用了transform..后面说不让用 用margin)
- ajax可以发送的数据类型有哪些
- 如果后端返回一个二进制流图片, 如何在前端将他还原(blob对象)
- 那还有什么其他方法实现吗?(canvas)
- canvas怎么去处理呢?
- 你用canvas做过图片处理, 怎么处理的?
- 图片的二进制数据格式是怎么样的
- html5了解过多少?
- web Worker了解过吗?(自己给自己挖坑, 说只能运行一个写死的文件, 可以封装一层将想要运行的内容也传递过去)
- 那让你来封装你怎么做
- localStorag/sessionStorage区别
- webSocket用在什么地方?(说现在在做的一个项目里面用的..)
- 那这个已经上线了么?能承载多少人聊天
- 你在这个项目里面的角色是什么
- react/vue的区别是什么?
- jquery/vue的区别是什么?
- vue相对于jquery的优势是什么
- 你接触前端也有两年多了, 那么你怎么看待前后端分离这件事
- https了解过么
- 详细说一下流程(客户端到服务端, 都干了啥)
- 浏览器缓存说一下
- ***-control都有哪些字段, 都有什么用
- no-store和no-***区别
- 还有一个和***-control差不多的(expires)
- 这两个有什么区别, 为什么有了expires还要有这个
- 协商缓存发送请求是那两个字段
- 为什么有了last-modified还要有etag
- 说一说让你用etag做一个缓存你会怎么做
- 跨域问题
- jsonp原理说一下
- cors能够设置哪些字段, 都有什么用
- 什么情况下会发预简请求
- 后端返回哪些字段表示是可以跨域的
- 性能优化方案说一下
- 写一个二分查找(还嫌我写的太快, 是不是准备过 捂脸)
- 你觉得你实习学到了什么
- 与学校做项目最大的区别是什么
- 你们用的git还是svn
- 后面想怎么发展, 确定是往前端发展么(我说后面也会想学后端),想转后端?
- 不不不...只是想学后端
- 有没有想过往前端全栈发展(哈?前端全栈是什么鬼...nodejs么)
- 有什么想问我的
三面
- 老家哪的?
- 为什么做前端
- d3.js接触过么
- 你技术栈是啥?
- 未来的打算是什么样的?
- 为什么要去这个公司实习, 没想过找个大厂么?
- 为啥七月才开始实习, 之前都在上课?
- 这个公司做啥的
- 你们ui是自己做还是设计师(设计师) 面试官:哦看来还算正经公司(北森有这么辣鸡么.....)
- 你后端接触的多么, node呢?(实在是不敢说会, 怕说了就玩完了)
- 那我觉得你的node不太行。。。前端一般都学这个吧
- 如果给你offer可以先来感受一下工作氛围么
- 有什么想问我的么
2019.8.15
hr面
- 介绍一下实习的项目
- 你的角色是什么
- 你平时的主要工作是什么
- 具体介绍几个你做过的工作
- 我不太懂你的意思, 因为我不太熟悉你们的业务, 你能不能想办法让我明白你们平时的工作内容以及你负责的内容(哭了)
- 然后对着简历上写的有关实习的东西问了个遍
- 你的项目是什么性质的(课设/实际使用)
- 为什么会选择去北森实习
- 你和前面几面面试官了解过我们的业务么
- 家是哪的
- 独生子女?
- 为什么选择去北化上大学
- 在北京有亲戚么
- 家里人如何看你在北京工作
- 为什么不考研
- 你现在在关注哪些前端技术么?(pwa/服务端渲染)
- 那你打算用哪些技术去做服务端渲染
- 2-3周给结果......
2019.8.17 深信服二面凉
一面
- css选择器优先级别
- 清除浮动方式
- 左侧固定右侧自适应布局实现方式
- js继承
- 事件***
- 同源策略
- 跨域方式
- 判断是否是数组的方式
- 如何在二叉树中插入结点
- 用数组表示二叉树
- 01背包问题
- 找出01序列最长的连续1的长度
- 楼梯问题:每次只能走1 2步, 有多少种走法
2019.8.19
二面
- 自我介绍一下, 重点说一下你的项目
- 如果再给你一次机会, 你会怎么做这个项目
- 接触过不少框架吧? 那你觉得用这些框架来做这些项目有什么优缺点
- 你觉得公司的代码有哪些优点
- 你技术选型是怎么选的
- 你平时有做总结吗?讲一个你印象最深的
- 你平时有看过哪些书
- 那你平时的时间是怎么安排的
- 然后问了一些简历上实习相关内容
2019.8.29 腾讯音乐一面凉
一面
- 自我介绍
- 介绍一下自己实习的项目
- 继续问实习
- 可以接受深圳工作么
- 不是你的意向事业群可以接受么
- 我们有几个方向(页面实现, 框架实现, 全栈), 你比较喜欢哪个(我为什么要说全栈???做个切图仔不好吗)
- 你觉得你在全栈上有什么优势
- nodejs的事件循环和浏览器的事件循环有什么区别
- 谈谈js几种模块化的区别, 比如es6和commonjs
- 进程和线程的区别
- js中是没有进程和线程的概念的, 那么它是如何去处理异步事件的?
- 谈谈操作系统中cpu是如何去处理事件的
- 谈谈从拨号上网到从浏览器访问腾讯的一个页面涉及到的协议有哪些
- 你能介绍一下http么, 从任何方面, 你感兴趣的你知道的都可以(我说我不会...介绍tcp吧)
- 介绍一下mysql的触发器和存储过程
- 介绍一下事务
2019.8.16 shopee意向书
一面
- new 内部实现
- js 中判断类型的方法
- typeof 有什么不好的地方
- 最完美的方法的哪一种
- 如何实现一个对象的属性无法改变
- defineProperty 还有什么其他可以配置的
- 还有什么其他实现的方法
- instanceof知道吗
- 他的作用是什么
- 他可以判断一个变量是否是数组么
- 深浅拷贝说一下
- object.assign 实现的是什么
- 如何实现深拷贝
- 说一下你理解的闭包
- 闭包有什么缺点
- 平时的应用场景
- xss说一下
- csrf说一下
- token值怎么传递
- get方法怎么传递token值
- 前端性能优化
- 前端常用的数值单位
- rem和em的区别
- 1vw等于多少
- 为什么0.1+0.2不等于0.3
- 怎么让它等于0.3
- let a = {} 说一下这段代码变量的存储
- 那let a = 1呢
- 说一下let const var
- 箭头函数和普通函数的区别
- 给一段代码看输出(this指向问题)
- visible:hidden和display:none有什么区别
- 在render dom 和 tree dom里面呢?
- 浏览器的事件循环机制说一下
- 下面这段代码的输出结果
- 什么是同源策略
- 跨域的方式说一下
- 什么是事件***
- call bind apply有什么区别
- 实现居中的几种方式
- target和currTarget的区别
- vue的生命周期
- vue beforeCreated到create发生了什么
- vue 父子组件通信方式
- react 生命周期
- react父子组件通信方式
- react虚拟dom
- react diff过程
- react diff主要对比的是什么东西
2019.8.23
二面
- 来个自我介绍吧
- 介绍实习内容
- 重点聊了实习的一个东西, 没做过应该不会问
- react列表渲染有什么注意的地方
- 为什么需要加key值
- 知道react是怎么渲染虚拟dom的吗
- vue/react的区别
- 有关注什么前端技术
- 平时会系统学习前端吗?
- 为什么会选择前端
- 有什么想问我的(没啥了吧)
- 然后.....面试官: 你不想了解一下我们公司吗??内心慌得一匹的我马上补了两个问题
2019.8.29
HR面
- 家在哪里
- 工作地点怎么选择
- 成绩排名
- 怎么选公司
- 还面了哪些公司
- tx和虾皮的一面比感觉怎么样
- 你认为什么技术氛围比较好
- 期望薪资
2019.9.5 小米意向书
一面
- 一份题目, 八个题
- 常见状态码
- http请求方式
- css选择器优先级
- js看输出
- 实现一个js继承
- 输出指定日期: 比如2019-4-1
- 写一个闭包的实际例子
二面
- 元编程?
- css动画
- css background相关属性
- react render函数什么时候会执行
- react 生命周期
- 实现一个轮播
- 实现一个效果, 文字较短居中显示, 过长居左
- 1px实现方式
- viewport
- 跨域
- Map, Set
2019.8.9 猿辅导意向书
- 一面
- 一开始随便聊了聊:
- 为什么选择前端
- 挺喜欢羽毛球?(简历上做了一个羽毛球相关项目...兴趣爱好写了院队队长...)
- 然后是常规问题:
- 自我介绍
- 你觉得收获最大的一个项目
- 当初为什么要做防抖, 怎么做的
- 现在如果让你做防抖你会怎么做?
- 实现一个防抖函数(手撕)
- js的异步是如何实现的?
- js怎么判断setTimeout是否应该加入任务队列
- 怎么看待前后端
- 你怎么理解mvc和mvvm
- 了解过什么协议吗?http?
- http是哪一层的?
- tcp/udp的区别
- 一个词总结tcp/udp区别
- 说一下三次握手的细节
- 用链表实现一个队列(手撕)
- 找出最长连续递增序列(手撕)
- 如果找出不连续的最长递增(思路)
- 一开始随便聊了聊:
2019.8.16
二面
- post请求的http请求格式写一下
- 服务端返回304的过程讲一下, 从最开始客户端请求到服务端返回
- 事件冒泡/捕获
- 事件***
- 点击一个文本结点, target会是什么
- 实现一个左列定宽, 右侧自适应
- when('#id).then(success, faild), 如果id存在执行sucess回调, 不存在执行faild回调, 不能用promise
- 数字->字符串对应, leetcode原题, 1:a 2:b 3:c 123变成字符串有哪几种可能
三面
- 自我介绍
- 学校课程
- tcp/udp区别
- 有什么方式可以实现服务端推送
- 什么是长连接短连接
- websocket是如何建立的
- 全双工和半双工的区别
- 一句话, 将其反转, 但是每个单词不变
- 一个左右部分都是有序的数组, 找出其中的最小值
- 有什么问我的
2019.9.1 字节跳动正式批二面挂
一面
- 自我介绍
- 全排列
- 看输出
- cors
- 204/206的意思
- 实现一个函数, 奇数次输出1, 偶数次输出2, 不能使用全局变量
二面
- 常见状态码, 400是什么
- 服务端如何设置一个302跳转
- 共享缓存解释一下
- 手写一个sql语句, 包含where和order by, 随便什么都行
- 进程间的通信方式
- 二叉树看是否存在路径和为N的路径
- async/await看输出
- 原型链看输出
2019.9.8 字节跳动不知道为什么再捞再挂
9.1日前端二面挂了, 然后被捞起来说加两面业务面, 以为面前端...然后发了个客户端面试通知过来....然后临时抱佛脚看了两天客户端...面的时候面试官问了一堆前端...最后一问这是面的客户端还是前端..面试官:我们主要做前端......
你前面几次面试你觉得有啥没答好的问题吗
来写个题, 提前批没做出来的题目.......:
//实现ES5中Function原型的bind方法, 使得以下程序最后能输出'success' function Animal(name, color) { this.name = name; this.color = color; } Animal.prototype.say = function () { return `I'm a ${this.color} ${this.name}`; }; const Cat = Animal.bind(null, 'cat'); const cat = new Cat('white'); if (cat.say() === 'I\'m a white cat' && cat instanceof Cat && cat instanceof Animal){ console.log('success'); }
输出
if ([] == false) {console.log(1);}; if ({} == false ) {console.log(2);}; if ([]) {console.log(3);}; if ([1] == [1]) {console.log(4);};
深拷贝实现
react看输出
constructor() { this.state = { val: 0; } } componentDidMount() { this.setState({ val: this.state.val + 1, }); console.log(this.state.val); this.setState({ val: this.state.val + 1, }); console.log(this.state.val); setTimeout(() => { this.setState({ val: this.state.val + 1, }); console.log(this.state.val); }) }
平时怎么学习前端
有在做什么项目吗
鉴权问题
2019.7.14 EE部门提前批二面挂
- 一面:
- 三道编程题:
- bind实现, 没看懂到底是不是让我实现bind, 原本以为会自我介绍然后基础然后穿插一些算法, 结果一上来给我整编程有点懵, 一开始还写成了实现apply, 后面才反应过来, 过了十分钟没写完面试官说下一题.
- 寻找二叉树中是否存在结点和为n的一条路, 用递归实现了, 然后再把路径打印出来.面试官问我这样真的能实现吗。。。。我看了一会自己的代码。。能。。然后就下一题了。
- 订阅发布者模式, 实现on, off, trigger, 写完了然后让写一个once, 这个改了几次才改对。。。。。。
- 两个问题:
- 用过express的中间件么(没有)
- 讲一下express什么什么的原理(内心:我不熟悉express啊...藏在简历里面的一个角落都能给我抓出来问)
- http强缓存和协商缓存, 协商缓存具体过程讲一讲, 为什么有了last-modify还需要Etag.
回答:last-modify只能精确到秒, 一秒内多次修改不能识别出来.面试官: 确定吗?我emmmmm确定。那文件修改了Etag值就会变吗, 我: 对. 那我只修改了一些注释不想让他变应该怎么做.我:应该在生成Etag值的时候去做一些处理.Etag值是框架生成的还是自己生成的?我:自己生成的.......好了我没什么问题了, 你有什么想问的吗?
- 三道编程题:
- 二面
- 找出缺失的最小正整数 leetcode原题
- 从一千万行ip4地址中匹配一条ip4v地址, 思路
- 正则匹配url参数
- 给代码看输出
- 跨域解决方案