快手前端日常实习,base北京,数据平台部。三轮技术面+HR面,前后一共耗时6天,已成功拿下offer,准备休学run北京了。
先总体点评一下面试体验,面试体验绝对算是大厂中很优秀的了,面试过程用的是自研的轻雀SaaS平台,三轮面试面试官都很和蔼,而且面带微笑很尊重人,面试时候有时候遇到卡壳的地方也会耐心的引导你。
一面(9.14)
1. 输出结果
setTimeout(() => {
console.log(1);
}, 0);
console.log(2);
(new Promise((resolve) => {
console.log(3);
})).then(() => {
console.log(4);
});
console.log(5);
2.输出结果
var name = '123';
var obj = {
name: '456',
getName: function () {
function printName() {
console.log(this.name);
}
printName();
}
}
obj.getName();
追问:如何输出456? 两种方式
3.输出结果
function Foo() {
this.a = 1;
return {
a: 2,
b: 3
}
}
Foo.prototype.a = 6;
Foo.prototype.b = 7;
Foo.prototype.c = 8;
var o = new Foo();
console.log(o.a);
console.log(o.b);
console.log(o.c);
追问:如果删除return 返回什么结果?
4. var let const 区别?
5. 场景题 :从级联选择器中,找出当前项的元数据,并完善方法filterDataFromCascader
const originData = [{
"field": "shandong",
"displayName": "山东",
"category": 2,
"children": [
{
"field": "weihai",
"displayName": "威海",
"category": 2,
},
{
"field": "qingdao",
"displayName": "青岛",
"category": 2,
}
],
}];
// 示例 key: [shandong, qingdao];
// 要求找出传入key最后一层的元数据(层数不确定)
const filterDataFromCascader = () => {}
6.算法:最长回文子串
7. 场景题:有一个menu,想进入页面的时候就定位到上次最后进入的那一个,怎么做?
8. 如何统计当前网页出现过多少个html标签?
9. DNS是怎么查询的? 迭代查询和递归查询过程?
10. 浏览器进程线程
11. 回流和重绘
12. 属性的隐藏显示有什么方法?有什么区别?
13. 说一下HTTP缓存?有哪些字段?协商缓存的ETag是怎么生成的?
14. 完善三栏布局
<style>
<div class="container">
<header></header>
<div class="body"></div>
<footer></footer>
</div>
<style>
.container {
}
header {
height: 20rem;
}
.body {
}
footer {
height: 35rem;
}
</style>
15. flex是哪些属性的简写?默认值是什么?
16.还有一些常规的八股,比较简单,不记得了。。。。
反问:
1. 公司对于实习生的要求?
2. 对于我的面试评价以及有什么学习上的建议?
3. 工作时间安排?
然后就是愉快的聊天环节,面试官对我表现挺满意,也给我详细介绍了一下部门的三大业务主线,还说我去的话应该是去协助开发流量埋点监控的系统,大数据平台支持相关。(这一刻我感觉想为快手卖命)
晚上9点多HR打来电话约了二面
二面(9.15)
1. 自我介绍 2. 项目介绍?项目亮点?项目深挖
3. 对Promise的理解
4. 手撕:手写promise.race
5. JS如何判断类型?
6. 数组常用API?了解reduce吗?
7. 手撕:用reduce写一个数组拍平,拍平n层
8. 手撕:带pid的数组转树
9. Vue框架相关八股文,时间隔太久忘记了。。。
晚上9点多HR打来电话约了三面
三面(9.16)
1.输出
Function.prototype.a = () => alert(1);
Object.prototype.b = () => alert(2);
function A() {};
var a = new A();
a.a();
a.b();
追问1:描述此题中相关的原型和原型链? 追问2:如果A中return一个number类型的数字,输出结果有什么不同?
2.算法:字符串匹配 indexOf 实现
W="ABCDABD"
S="ABC ABCDAB ABCDABCDABDE"
直接手写了kmp,其实面试官就是想问暴力匹配怎么写。。。。
3.手撕:发布订阅模式,实现一个EventBus类,具备on、off、once、emit方法
4. 场景题手撕:基于 Vue 或 React 实现一个弹窗, 1、弹窗带有半透明的全屏遮罩;
2、弹窗可以点击遮罩和关闭按钮隐藏,也可以通过设置 visible 的 prop 隐藏;
3、弹窗可以设置 title 和主内容;
4、弹窗打开和关闭时可以 emit 事件 open 和 close;
5、场景弹窗显示时可以带动画(加分项);
<my-dialog>
<div>
主内容
</div>
</my-dialog>
5. 场景题:后端传给你10w条数据,前端怎么去处理? 6. 说一下虚拟滚动实现的思路? 这个不太会。。。。。
7. React的常用hook?useEffect的作用?听说过useRef吗?
8. Vue中如何让属性失去响应式?
9. 描述一下Vue3中Composition API和Vue2的Option API的区别?Composition API有什么缺点或者使用过程中的踩坑?
10. 其他框架的八股不太记得了。。。
由于自己主技术栈是Vue,因此React没有问太多内容。
然后反问环节问了一下公司部门对于招聘的实习生的要求是什么,其实就是间接的试探一下对于我的评价,三面面试官对于我的算法手撕能力评价不错,听到这话大概率就稳了。
然后就是介绍BU的业务以及和我聊聊我的职业规划,还有就是项目中遇到困难怎么解决brbrbrbr,估计就是在考核我的性格以及是否具有抗压能力吧....
------------------------------------------------------------------------------------------------------------------------
然后就是一个漫长的周末,,,,,
HR面(9.19)
你能想到的都问了,都是常见的HR面套路,就不多说了。
9.20 Offer到手,6天的快手面试顺利结束,开始准备办理休学手续,找理由拒掉之前已经拿到的两个offer,准备去北京入职啦~
#前端开发实习##快手面试##快手面经##日常实习##快手前端面试#