暑期实习面经总结
从3月底到现在,依次面试了作业帮(一面挂)、金山软件(offer已拒)、完美世界(一面挂)、360(一面郭,二面拒了)、网易(一面挂)、滴滴(一面挂)、小米(已OC)、快手(二面挂)、字节(二面挂)、美团(拒)。出于对雷总的崇拜,毫不犹豫选择了小米,部门主要是做手机的IOT业务,通过手机去控制小米一系列生态,如摄像头、洗衣机、扫地机器人、灯光之类的,方向应该是react native。
以下是近期面试的一些高频题,大家可以参考下:
HTML
1.HTML5新特性、介绍一下语义化以及语义化的优点
2.输入url后发生了哪些操作、什么是强制缓存和协商缓存
CSS
1.css盒模型
2.css样式优先级算法
3.flex布局、flex常用属性、flex:1包含哪些属性
4.两栏布局、水平垂直居中 要掌握多种实现方式
5.怎么理解文档流?介绍块级元素、行内块元素、行内元素以及三者之间如何相互转换、对每种类型元素分别举几个例子;他们之间的嵌套规则是怎么样的?
6.什么是伪元素和伪类
7.什么是BFC、BFC的特性有哪些、怎么设置一个元素成为BFC
8.css实现动画的属性,transfrom和animation有什么区别
9.重绘和重排
10.移动端适配(这个被字节面试官狠狠拷打了)
11.手写一些布局
js
1.js数据类型、基本数据类型和引用数据类型分别存放在哪里?
2.typeof和intanceof判断元素类型有什么区别?
3.原型以及原型链(滴滴面试官根据这个问了如何判断某个属性是否属于自身)
4.let const var有什么区别,var结合作用域的代码输出面试题很常见
5.事件循环、事件循环的代码输出题也很常见
6.什么是闭包、闭包作用、闭包会带来哪些问题
7.防抖和节流以及防抖节流使用场景、实现防抖和节流函数
8.es6有哪些新特性(es6中proxy,这个也被字节面试官拷打了)
9.map和object的区别,set集合中判断元素重复的方式是什么?
10.for...in和for...of区别
11.普通函数和箭头函数区别,箭头函数可以当构造函数吗
12.创建对象时new操作符都干了什么,构造函数里写返回值有什么影响吗
13.this指向,如何改变this指向,实现call、apply、bind函数(推荐大家去看黑马的面试视频,我觉得这是全网最简便写法)
14.直接赋值、深拷贝和浅拷贝 实现深拷贝函数
15.es5继承和es6继承 组合式继承和寄生组合式继承
16.js实现异步都有哪些方法,async和await
17.判断相等有哪些方式,==和===有什么区别
18.Ajax、axios、fetch区别
19.经常用到Promise哪些方法
20.localStroage、sessionStroage、cookie区别
21.浏览器的垃圾回收机制(V8也要介绍)
22.数组有哪些方法 重点: map方法(map中不写return会怎么样?)、filter方法、reduce方法、Array.from方法
git
1.一般上传代码有什么流程
2.拉代码指令
3.合并代码指令
4.推送代码指令
5.怎么回退代码
6.rebase和merge区别
webpack
1.修改过哪些配置?
2.plugin和loader区别
react
1.react设计理念
2.怎么样理解单向数据流
3.经常使用哪些勾子函数
4.useState和useRef区别 useState和useReducer
5.useCallback、useMemo、memo
6.useEffect中写return了有什么作用,第一个参数可以是异步的吗
7.条件语句里可以写hooks吗
8.函数柯里化
9.react组件通信方式
10.react中diff算法,key的作用
11.手写一个count组件,实现自增,自减的方法
12.自定义hook有什么作用
13.函数式组件和类组件有什么区别、它们的使用场景
14.新旧生命周期对比
其他
1.进程和线程理解
2.数据结构中排序方法有哪些
3.时间复杂度和空间复杂度概念
4.介绍一下动态规划算法
5.什么是深度遍历和广度遍历
6.SQL相关指令
7.浏览器开发者模式面板中常用的功能,http请求常见的请求头和响应头有哪些
8.tcp三次握手,序列号和确认序列号有什么作用
9.如何预防xss攻击
遇到的算法题
1.合并两个有序数组,保证数组仍然是有序的
2.如何删除链表倒数第n个节点
3.两数之和,不能使用两层for循环
4.删除数组中重复的元素,例如['h','e','l','l','o','w','o','r','l','d'],删除'l',用双指针
5.数组去重多种方式,去重之后如何随机打乱数组
6.二分查找、冒泡排序、快速排序
7.输出数组中没有出现过的最小正整数
8.数组扁平化