秋招面试记录
面试过的各大厂面经
字节
- html标签类型
- meta作用
- css盒模型
- 用js向页面添加一个元素
- 算法题:扁平化数组
- 实现一个js函数A,传入一个带参数的函数B,实现用参数调用A实现B里的功能
- 向刚刚添加的a标签添加点击事件
- 如果一次性添加上千个a标签有没有性能优化方案
- 如何给某ul下上千个li都添加鼠标点击事件,有没有优化方案
- git都有哪几个存储区,都是干什么的
- git实现xxx功能的代码(xxx忘了具体是什么了。。)
阿里
- 先自我介绍
- 针对我的实习问了一些关于做了什么软件,我干了什么之类的问题
- html标签,meta作用
- 做过移动端没,移动端meta作用?(忘了具体问题)
- 讲一讲css选择器
- position类型,具体区别
- css盒模型
- js的基本类型都有什么
- js里this指针怎么判断指向(我回答谁调用指向谁)追问箭头函数的情况下指向谁
- js如何实现跨域
- 接触过代码打包吗
- 简述一个域名从你发出到打开都经历了什么
- 前端的性能优化方法
腾讯
- 先自我介绍
- 针对自我介绍问了项目具体技术栈,我做了啥
- 针对简历
- 个人博客最新发布的两个算法题解,第一个问我怎么想的,就针对js语言有没有其他更简单的实现方式(数组直接变数字加一),说说时间复杂度,不用while的话解决方法(递归)递归的条件说一下
- 第二个题解说说思路,我就blbl说思路,然后说其他的解决方法等等
- 还有很多简历上其他的,基本上写过的都问了
- 用js去除一个字符中所有空格(replaceall)不用replaceall呢(replace加正则表达式)还有别的吗(slice)
- 出了六道题在线做题
- 纯css实现三角形
- js实现typeof
- 递归算法
- 跨域
- Css布局方式
- url从输入到显示出画面都经历哪几步
- 我写了三次握手,让展开讲讲blbl
- 为什么是三次,两次呢?
- 数组是怎么传输过来的(tcp blbl)
- 简历有写数据库,如何给一个表有id和成绩,求平均成绩最好的那个
- 他自己介绍了一下部门
- 有什么问题
好未来
先自我介绍
css部分
- 左右固定中间可变怎么实现
- 上边用flex,flex具体横向的属性叫什么
- transform这个属性是干啥的(说了transit)
- 如何使用transit实现右移100px
- 如何用选择器实现table偶数行底色变红
- 选择器都有哪些
js部分
js基本类型
ES6新增了什么类型
typeof用法,typeof null/undefined/array各自返回什么
如何区分null 和 array
如何获得一个元素的种类
Object.prototupe.toString.call(a)
假设有两个元素,一个对象一个数组,不知道种类前提如何遍历(用Array.isarray()判断出是数组然后进行for循环)
除了for循环还有什么方法能遍历数组(map)
map和foreach有什么区别
数组都有什么方法
怎么遍历对象(for in)
ES6新增了for of,怎么用
对象可以用for of吗
假设现在给一个图片的url,如何创建一个img标签,给他设置url并且添加到body后边
- 需要考虑url是否能用
说说事件捕获和事件冒泡
_.proto. 和 prototype的区别,写一个例子来表示谁指向谁
网络部分
- 304代表什么,与200有什么区别
小黑盒(实习)
- js ES5数据类型?ES6新增了什么类型?
- 用map,set和new object创建对象的区别
- var和let的区别
- 给代码说结果
1 | console.log(a) |
- css如何让元素居中?
- 行内元素用text-align
- 块级元素如何垂直居中(设top)
- 块级不确定高度元素垂直居中(上述加transform:-50%且无height)
- 用css创建三角形,原理?
- 说说css盒模型,IE盒模型
- 用css画一个大小为父元素宽度一半的正方形
- transition和animation区别
- css如何实现动画
一些笔试题
如何实现add(1)(2)(3)...
1
2
3
4
5
6
7
8
9
10
11
12
13function add(...arg) {
var a = [...arg];
_add = function (...innerArg) {
if (innerArg.length === 0) {
return a.reduce(function (a, b) { return a + b })
} else {
[].push.apply(a, innerArg)
return _add;
}
}
return _add
}
add(1)(2)(3)()//6如何实现数组扁平化
1
2
3
4
5function flatten(arr) {
return arr.reduce((result, item)=> {
return result.concat(Array.isArray(item) ? flatten(item) : item);
}, []);
}1
2
3
4
5
6function flatten(arr) {
return arr.toString().split(',').map(function(item) {
return Number(item);
})
}1
2
3
4
5function flatten(arr) {
return arr.join(',').split(',').map(function(item) {
return parseInt(item);
})
}
美团
- 自我介绍
- 为什么想干前端
- js数据类型
- 怎么区分的基本类型和引用类型
- js this指针,call,bind
- 深拷贝
- 算法:链表反转
- promise
- 网络302和304都代表什么
- css如何实现水平垂直居中
- vue框架原理
蒸汽记忆
一面:
- js数据类型
- Typeof(NaN)输出什么
- null和undefined区别
- 软件设计模式有哪些
二面:
- 求平方根
- 力扣第一题两数之和
春招
字节
用nodejs读4G大文件的方法
js多线程的方式有哪些
如何控制多线程的进度
进程和线程的区别
进程间通信,线程间通信
管程是什么
Http2 和以前的有什么区别
js数据类型
哪些数据类型是保存在堆空间,栈空间