近期面经总结(2.14-3.2)
想着要开暑假实习了,先投点日常实习(基本都是小厂)看看自己的八股还记得哪些,同时也是督促一下自己的学习(最近有点懒惰了),下面是这些天的面经总结。
公交云
一面,2.14,20min
自我介绍(面试官让说细一点,直接照着简历念一遍)
实现经历相关
项目经历相关
用过哪些ES6相关API
详细说说Promise
有没有用过Promise.all和Promise.rece
怎么用这两个方法实现异步并发执行控制器的
说一下let和const
ES6的数组方法用过哪些
map和forEach的区别
React接触Class多和hooks多
说说useEffect、useState
了解过Redux和mobx吗
说一下useContext
有用过useReducer吗
项目中axios有封装过吗
怎么封装的,用到了axios的哪些方法
有自己去配置过webpack吗
webpack的执行流程
反问: 那边的技术栈是react吗,说是react,但有可能会有老项目里面使用的class写法。一共有几轮面试,说还有一轮技术面+hr面
总结:基本都是八股,好多都说的不太清楚,webpack了解的也还不够多。
二面,2.16,10min,被鸽了半小时,给hr打电话说是在开会
用1-2分钟总结一下上次面试内容
上次面试有哪些是没有回答好的
通过做这些项目能不能介绍一下你的软技能,思想,能力,方法论(到这里已经感觉到这次不是技术面了,应该是领导面)
以你现在的视角去看以前做的项目,有哪些地方还可以提升,包括技术和非技术方面
有女朋友吗(???)
能接受996吗(???)
大概什么时候能到岗
总结:实习居然也有这种面试,还以为只有社招会有,涨姿势了
ZStack
一面,2.17,40min,电话面
实习项目相关
低代码原理(JSONschema,数据域)
原型链
Promise
微前端有了解吗
项目的人员分配,负责什么
虚拟列表(固定高度,动态高度)
大文件分片上传
ssr项目
深浅拷贝
ts有了解吗
介绍react(可中断渲染,时间分片,diff)
总结:总体难度还好,第一次被问到微前端,要学不过来了:c
星环科技
一面,2.17,30min
http请求头有哪些
强缓存和协商缓存
http和https
http请求方法
http状态码
rest请求风格
网络攻击(xss,csrf),前端如何避免
实习中有没有遇到的css相关问题
去重有什么好方法(性能上)
JavaScript执行原理
原型链
ajax按顺序发送请求
反问:
要求vue但我只会react会有影响吗,说还是希望能够尽快上手
总结:太久没看计网相关的了,全寄了
字节-飞书
一面,2.20,75min,后面一大半时间都在做第一道场景题。。。
自我介绍
项目中哪些点是有挑战的,以及如何解决的
对原型链有了解吗
使用new实例化的具体过程
class的static属性存放在哪里
class中的私有属性是如何实现
闭包了解吗
promise有了解吗
Promise.race()和Promise.all()的区别
Promise.all()是所有的元素状态变为fulfilled才会执行then方法,如何实现当里面有个元素状态变为rejected态后依然执行then方法
说一下react的生命周期(没用过类式组件,说了一下useEffect)
useCallback返回的值作为其他hook的依赖时(其他的useEffect,useCallback),会导致当前这个useCallback更新时引发其他的useEffect和useCallback的更新,如何避免。(这里没理解到,没答上来)
高阶组件有了解过吗
对应哪一个设计模式的实现(寄,后面设计模式都寄了,要补一补设计模式了)
了解过哪些设计模式
说一下观察者模式和发布-订阅模式的区别
有在哪些地方见到过这些模式的使用吗(js的事件)
说说了解的react底层渲染原理
react分片渲染具体是怎么实现的
如何保证上传每一个文件切片和后端接收到的文件切片对应(给每一个切片加上唯一标识,和切片一同发送给后端)
说一下断点续传
如何实现用户刷新页面任然可以继续上传
场景题
// 实现scheduler函数(异步并发执行控制器)
// 第一次见,磨蹭了半天还是没写出来
const request1 = () => {
return new Promise((reslove, reject) => {
setTimeout(() => {
reslove(1)
}, 800)
})
}
const request2 = () => {
return new Promise((reslove, reject) => {
setTimeout(() => {
reslove(2)
}, 400)
})
}
const request3 = () => {
return new Promise((reslove, reject) => {
setTimeout(() => {
reslove(3)
}, 500)
})
}
const addPromise = scheduler(2);
addPromise(request1).then((res) => {
console.log(res)
});
addPromise(request2).then((res) => {
console.log(res)
});
addPromise(request3).then((res) => {
console.log(res)
});
/**
* 输出
* 2
* 1
* 3
*/
// 实现
function scheduler(limit) {
const exetuing = [];
return async function (fn) {
if (exetuing.length >= limit) {
console.log(exetuing)
await Promise.race(exetuing)
}
const p = fn().then(res => {
exetuing.splice(exetuing.findIndex((item) => item === p), 1)
return res
})
exetuing.push(p)
return p
}
}
// 实现Event
const event = {
on() {}, // 绑定事件
off() {}, // 移除事件
once() {}, // 触发一次
trigger() {}, // 触发事件
}
// 需要注意移除事件时,会移除所有相同引用的事件
反问
总结:React的Hooks的依赖处理、设计模式和class原理还要多看看。场景题太菜了,得多写写。
安恒信息
一面,2.24,20min
学了哪些课程
盒模型的构成
普通盒模型和怪异盒模型的区别
居中布局了解哪些
了解BFC吗
margin在垂直方向上有重叠怎么解决
js的基本类型
基本类型和引用类型有哪些
var,let,const的区别
深拷贝和浅拷贝的区别
用过数组的哪些方法
forEach和map的区别
删除数组中的某个数可以用哪些方法
filter和splice对数组的操作有什么区别
箭头函数和普通函数的区别
主要使用React还是vue
组件间的通信
有用过redux吗
git push的时候要注意什么
git reset和git revert的区别
虚拟列表可视区的高度是怎么控制的
项目主要是做什么的
反问
总结:git和redux还是要在看看相关的原理
字节-数据机器人
一面,2.27,60min,三战了,这次至少过个一面吧
自我介绍
说说做的项目里那个有难度
虚拟列表的数据量(上面有说到虚拟列表)
虚拟列表元素的高度固定吗(虚拟列表定高和不定高)
滚动过快会不会出现白屏(上下多渲染几条做缓冲)
那快速拖动滚顶条呢(这个没答上来)
为什么在b站实习周期这么短
这次能实习多久
实习做了些什么
低代码平台整体的设计原理
在低代码平台中组件和组件间的交互是如何实现的
如何实现一个不定宽高div的水平垂直居中
了解过闭包吗
代码输出题
var a = 10
function bar() {
console.log(a)
}
function foo() {
var a = 20
bar()
}
foo()
// 输出10
// 考察js的静态作用域
function add() {
var n = 20
function f() {
n++
console.log(n)
}
f()
return f
}
var n = 10
function x = add()
x()
x()
console.log(n)
// 输出
// 21
// 22
// 23
// 10
// 考察闭包
说说事件循环机制
哪些是宏任务,微任务
然后相关的代码输出题
具体代码内容记不住了,有个坑是promise没有调用reslove和reject方法,后面的then()是不会执行的
讲一下react fiber
react的时间分片底层调用的是哪个api(分浏览器环境和node环境,浏览器下是MessageChannel,node下是setImmediate)
MessageChannel属于宏任务还是微任务
了解过http的缓存吗
Etag和Last-Modified的优先级
场景题
// 实现combin函数,combin函数的功能如下
const sayHello = (...args) => `hello, ${args.join('AND')}`
const toUpper = (str) => str.toUpperCase()
const f = combin(
sayHello,
toUpper
)
console.log(f("tom", "alice")) // HELLO, TOM AND ALICE
// 实现
function combin(...fns) {
return function(...args) {
let curArgs = args
for (let fn of fns) {
const res = fn(...curArgs)
curArgs = [res]
}
return curArgs[0]
}
}
// 如果combin接受方法返回值是promise这种如何处理(async/await)
function combin(...fns) {
return async function(...args) {
let curArgs = args
for (let fn of fns) {
const res = await fn(...curArgs)
curArgs = [res]
}
return curArgs[0]
}
}
反问
总结:这次难度还好,基本上都答上来了,但是输出题还是要多注意细节。
百度-搜索产品
一面,2.28,50min,偏偏这次网络卡,好多问题没听清又问了一遍,巨尴尬。
自我介绍
能实习多久
flex实现水平垂直居中
从后往前排列怎么实现(flex-direction)
说说flex:1
弹性布局怎么实现
flex的兼容性
对css动画的了解
一个div在500ms内先放大1.2倍在缩小0.9要如何设置(不会,寄)
css的选择器了解多少
使用!important会有什么影响
有两个div,如何选择后面个div(:last-child)
如果要选择倒数第二个要怎么选择(:nth-last-child())
了解兄弟选择器吗
less和css有什么区别
说说ES6
箭头函数和普通函数的this指向
原型和原型链
原型链的应用场景
如何改变一个类所继承的对象
Promise主要用来解决什么问题
如果有多个promise如何一起执行
Promise.all和Promise.race有实际用过吗
直接上传一个大文件会有什么问题
对webpack的了解
如何修改文件入口,以及多入口如何配置(entry)
对插件熟悉吗(插件没怎么了解过,说了一下loader)
img-loader是怎么解析的(不会,寄)
浏览器渲染页面过程
有了解过GPU和CPU这一块吗(没有。。。)
css哪些属性会触发重绘
重绘和回流哪个对性能影响大
手写快排,写到一半写不出来了,说了一下快排原理以及时间复杂度,然后给换了一个,计算斐波那契数列(第一次写算法。。。大寄特寄)
反问:
会用到node吗,说会(寄)
前端框架使用React吗,说不是(又寄)
总结:虽然都是八股,但是好多都不会。。。算法也要加强了。
字节-数据机器人
二面,3.1,30min,第一次面字节这么快结束的
自我介绍
在实习中做的比较有挑战或者有价值的点
对低代码平台的哪些功能做了抽象
对js文件处理的时候有考虑过安全问题或者注入问题吗
还是实习项目相关
有用过vue吗(无)
你认为React哪些地方做的好,哪些地方还可以改善(说了一下React的任务调度,以及useEffect在使用上的心智负担)
说一下盒模型
如果让你实现一个富文本编辑器,你觉得哪些地方是需要注意的(文本内容,非文本内容)
说一下计算机网络分层(TCP/IP四层网络模型,和OSI七层网络模型)
说一下快速排序的整个过程
算法题,1.两数之和(????字节居然会出easy,感动麻了)
后面问能多久到,能实习几个月
总结:有些问题都是基于场景的,感觉这种只有靠自己的经验积累了。
百度-搜索产品
二面,3.2,60min。
对上一次面试的总结
怎么学前端的
position有哪些属性,区别是什么
有了解过position:sticky吗(粘性定位)
说一下px,em,rem的区别
用typeof会返回哪些值
typeof null为什么返回object(×,但面试官说是跟原型链相关)
如何精确判断一个对象的类型(instanceof,Object.tostring.call)
dom选择器有哪些
querySelectorAll返回什么(NodeList实例)
如何将其转换为数组(Array.from(),扩展运算符)
call,bind,apply区别
在哪些地方会用到这些函数呢
箭头函数可以new吗,为什么
Promise链式调用原理,解决了什么问题
说说Promise.all,调用该方法时里面的Promise对象是串行执行还是并行执行(并行)
async/await出错时怎么捕获
type和interface的区别(×)
require和import的区别(×)
http缓存
Etag使用的什么算法(说了一个md5)
Etag和Last-Modified的优缺点
跨域是什么,怎么产生的,如何解决
服务端怎么解决跨域
有了解过JSONP吗
cookie,session,storage的区别(cookie和storage都有限制大小,session是存放在服务端的)
怎么让cookie不被获取(服务端添加http-only)
前端安全了解哪些
如何监听页面加载完成
onload和DOMContentLoaded的区别(×)
手写深拷贝、发布-订阅
反问
总结:node和ts相关的是一点都没答上来。