Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

林一一的秋招面试 #27

Open
lurenacm opened this issue Nov 20, 2021 · 0 comments
Open

林一一的秋招面试 #27

lurenacm opened this issue Nov 20, 2021 · 0 comments

Comments

@lurenacm
Copy link
Owner

lurenacm commented Nov 20, 2021

开头

大家好,我是林一一。有一段时间没有写博客了,因为最近几个月的时间都放在秋招上面了,想了好久,秋招的经历不知道写还是不写。最近思绪很乱,心情也比较浮躁,想躺平一段时间,但总感觉有很多事情要做。下面的某些文字(非面试部分)删了又写,写了又删,从 1号 到现在一直断断续续的。这篇文章就算是给自己大学秋招的做一份记录,也是自己成长的一份记忆。

秋招结果简述如下:

  1. 百度 offer
  2. 京东 offer
  3. 爱奇艺 offer
  4. 有赞 offer
  5. 深信服 offer
  6. 字节(bushi😂)
  7. 腾讯 offer

秋招投了很多公司,包括字节,腾讯。。。
掘金

7月是一个好月份,哈哈。学校也开始放暑假了,但是暑假图书馆也只能开放一楼,每天十几分钟带着电脑 翻山越岭 过来。我是今年7月份开始投递简历的,但是提前批我基本没有机会参加任何面试,因为简历过不了(😂苦笑.jpg),加上有提前批的企业很少,所以整个七月基本都是感谢信😂。
时间推到了八月份逐渐开始了面试。下面的面经是秋招的一个记录,但是由于我技术能力和水平非常有限,可能这篇文章对大家不会有多大的帮助。而且时间过的比较久了,我并没有一一记录下所有的面试题。

关于我

关于我写在文章最后吧,发发牢骚。😂

字节电商(提前批)

7月提前批投简历,一投就挂简历,同学推来一个 HR 微信。我简历将塞到了一个 HR 手里,最后给了一次面试机会。

一面

一面的面试官很亲切,先微笑的和我自我介绍一下自己。给人感觉特别不错,整个面试过程很舒服,有说有笑。

  1. 自我介绍
  2. JS 类型 -> symbol 的出现原因,解决了什么问题 ->bigint 有什么作用-> 类型检查有哪些->typeof 的原理(二进制)-> null 为什么会被判断成 object
  3. 讲讲 0.1 + 0.2 != 0.3 的原因,编写一个函数解决这个问题。
  4. typeof 和 instanceof 的区别。
  5. 写一个可以检测所有类型的方法。
  6. for in 和 for of 的区别。
  7. 页面性能优化有哪些。(提到了服务端压缩,http 缓存,回流重绘等等,面试官就从这里面提问)
  8. 协商缓存的字段 Cache-Control 有哪些属性值,-> max-age 的属性值有哪些区别。为什么 http1.1 要新增 Cache-Control 这个字段?
  9. 图片懒加载你是怎么实现(我用的是 IntersectionObserver 来写)
  10. transform 会导致重排和重绘吗?为什么(Recalculate Style -> Layout -> Paint Setup and Paint -> Composite Layers 因为,transform 位于复合层 Composite layer 层)
  11. 服务端的 Gzip 压缩和 deflate 压缩有什么区别,使用了什么算法。(LZ77,顺便答了 png 的使用算法)
  12. 知道哪些网络攻击的方式?(提到了 csrf和xss)怎么做过滤和赛选的?
  13. CSRF 攻击怎么防御,origin 和 referrer 有什么缺点。
  14. cookie 有哪些属性值?cookie 的 sameSite 属性值有什么作用,httpOnly 和什么有关系
  15. 浏览器怎么实现跨域,为什么会有跨域的问题?sessionStorage 能在同源不同页面下共享数据吗?(不能)
  16. 写一下 JSONP 的实现原理。postMessage 有了解吗?
  17. 说一下浏览器的事件循环?浏览器的事件循环和 node 的事件循环有区别吗?(node V10之前有区别)
// 一道题
async function async1() {
    console.log('async1 start');
    await async2()
    console.log('async end');
}

async function async2() {
    return new Promise((resolve, reject) => {
        console.log('async2 start');
        resolve()
    }).then(res => {
        console.log('async2 end');
    })
}

async1()

new Promise(resolve => {
    console.log('Promise');
    resolve()
}).then(res => {
    console.log('Promise end');
})

console.log('script end');

// async1 start   async2 start  Promise  script end  async2 end  Promise end  async end
  1. requestAnimationFrame 有了解吗?在事件循环的哪一个阶段执行?
  2. 说一下 Promise。(这里同样问了好多 Promise 的问题)
  3. 实现一个 schedule 类
class Scheduler {
  add(promiseCreator) {/*...*/}
  // ...
}

const timeout = (time) =>
  new Promise((resolve) => {
    setTimeout(resolve, time)
  })

const scheduler = new Scheduler()

const addTask = (time, order) => {
  scheduler.add(() => timeout(time)).then(() => console.log(order))
}

addTask(1000, '1')
addTask(500, '2')
addTask(300, '3')
addTask(400, '4')

// output: 2 3 1 4
// 一开始,1,2两个任务进入队列
// 500ms时,2完成,输出2,3进入执行队列
// 800ms时,3完成,输出3,4进入执行队列
// 1000ms时,1完成,输出1
// 1200ms时,4完成,输出4
  1. 实现一个 Promise.all
  2. 有什么想问我的

这一面时间比较长 1 小时多点,面试官说过了。面试官最后告诉我,简历上学校不好,但是 Blog 写的还可以这也是一个亮点,所以给了面试的机会。很感谢面试官的鼓励。当时还想给他当小弟来着,但希望就结束在二面了

二面

被彻底碾压的一面。

  1. 问了一下项目。
  2. mixin 的原理和优先级,mixin 存在的缺点(优先级问题),怎么解决。
  3. 写过 vue的插件吗?vue 的插件中 install 实现原理,比如 vueRouter 中的 install 有什么作用。
  4. vue 中一个数据修改多次,一万次, vue 是怎么处理的,一次渲染一遍吗?(讲了vue异步更新的原理,他不满意)
  5. 详细讲讲 dep 和 watcher。
  6. 你是计算机专业的吗?有学过计算机网络吗?(不是)就问问了 OSi 七层协议,哪些层用了哪些协议。
  7. 箭头函数可以使用 new 的吗,有 this 吗?new 关键字背后实现了什么 -> 在使用 new 关键字的构造函数里面 return 一个 object 或基本类型会怎样。
// 一道题
var a = 0;
function Parent() {
  this.a = 1;
  return this;
}

Parent.a = 2;
Parent.prototype = {
  a: 3,
  setA: function (value) {
    this.a = value; 
    return this;
  }
}

console.log(new Parent().a); 
console.log(Parent().a); 
console.log(new Parent().setA(4).a); 
console.log(a); 
console.log(Parent().setA(5).a); 

面试官不停的在催促答案是什么😅

  1. CSS 实现动画好还是 JS 实现动画好,为什么?
  2. cookie 可以跨域吗? domain 属性被修改了会有效果吗?
  3. 详细说说 url 到页面显示的过程。
  4. 页面是先停止渲染还是先 tcp 挥手(我说了不同情况。面试官不满意,让我回去写一个 node 服务器,然后向客户端发送一个个 chunk 就知道了)
  5. 写过小程序吗,小程序的 url 地址看不见,不用域名可不可以直接使用 IP 。这样就省略了 dns 的解析不是更好吗?为什么?
  6. 说说跨域,jsonp 怎么处理多个组件需要调用的方法名字相同,冲突了怎么办?
  7. 设置了 Access-Control-Allow-Credentials和witheCredentials 为什么 cookie还是没能成功跨域;
  8. 反转链表,多层数组反转( [1, [2, [3, [4, [5, 'null']]]]] => [5, [4, [3, [2, [1, 'null']]]]]);

从后面开始,笑嘻嘻了。。。

百度

一天面完

一面

上来就是两道算法题

  1. 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5。
  2. 给出一个整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
function merge( A, m, B, n ) {
    // ... 
}

注意:1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A 的数组空间大小为 m+n。 2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了。 3. A 数组在[0,m-1]的范围也是有序的

说明:A 数组为[4,5,6],B数组为[1,2,3],后台程序会预先将 A 扩容为[4,5,6,0,0,0],B还是为[1,2,3],m=3,n=3,传入到函数merge里面,然后请同学完成merge函数,将B的数据合并A里面,最后后台程序输出A数组

示例:输入 [4,5,6],[1,2,3] 输出[1,2,3,4,5,6]。

输入
[1,2,3],[2,5,6]
输出
[1,2,2,3,5,6]

  1. 强缓存、协商缓存,这里问了好多,涉及到具体字段的设计、优缺点等(项目做过的缓存策略,缓存的依据)
  2. Node 事件循环和浏览器有什么区别?有输入输出题
  3. vue 的响应式原理。这里讲了好多,顺带提及了 nextTick 为什么可以在渲染 Watcher 的后面可以拿到新的DOM数据
  4. nextTick 实现原理(兼容性的4级降级处理)
  5. 闭包,闭包会存在什么问题,随后问怎么检测内存泄露的问题,什么情况会导致内存泄露。怎么解决(performance面板和memory快照)
  6. 浏览器的渲染原理,GUI 线程是怎么处理页面不同资源的。涉及到 asyncdefer 区别。DOMContentLoadedload 区别
  7. 怎么优化页面的性能,从哪里入手分析,分析了 performance 和 network 面板的参数。
  8. 怎么计算首屏时间 FCP,白屏时间。
  9. TCP 队头阻塞,TCP拥塞控制。(讲了拥塞控制的原理和实现算法)
  10. TCP 的流量控制,滑动窗口实现原理。
  11. HTTP3.0 解决了什么问题,和 HTTP2 区别,详细介绍 多路复用,多路复用存在什么缺陷。
  12. 。。。

面试体验不错。还有一些题目不记得了,题目的顺序不太一样。几分钟后二面

二面

二面的面试官比较严肃。氛围比较冷。同样上来还是算法题

  1. 二叉树的相关问题,题目没有记录了,写出递归和非递归的两种写法,(哦,这里还有时间复杂度的要求)
  2. 一道链表有环和统计环的长度问题
  3. 进程和线程的区别 (管道,共享内存,socket 套接字。。。,这里拉扯了一下浏览器的沙箱机制)
  4. 浏览器页面渲染过程,这里讲了好久。问的也深
  5. HTTPS。
  6. SSL 的握手过程,握手的最终结果拿到的密钥是对称密钥还是非对称密钥?(这里解析了一波对称密钥和非对称密钥的加密原理)
  7. 了解哪些对称密钥的加密算法(讲了 DES,3DES,RSA)
  8. SSL 每次都需要来一次握手过程吗?(握手后有一个 key 存在了 sessionID 中,验证 sessionID 就行)
  9. 浏览器是怎么验证 CA 证书的有效性的。(摘要算法的数字签名)
  10. 了解 webpack 吗?怎么编写一个 loader 和 plugins?你有做过哪些性能上的优化。(提及了plugins 中的运用函数 apply 和接收参数的 complier 和 compilation )
  11. HMR 原理(关键是 Websocket)。
  12. 有了解过哪些新的技术。
  13. 有哪些想问我的。
  14. 。。。

还有些问题记不太清楚了,结束后,叫我等会三面。

三面

三面聊了很久,和面试官聊的比较愉快,很亲切。

没有 HR 面

京东

一面:

  1. html 语义化的标签和意义?
  2. h5 的新特性有哪些?
  3. css3 的新特性?css3 的动画有哪些?
  4. Animation 和 transition 具体的区别?
  5. 怎么捕获动画最后一帧?
  6. 物理像素和逻辑像素区别?为什么存在移动端 1px 的问题,怎么解决
  7. 盒子模型,标准和被标准盒子模型有哪个属性决定?
  8. border-box 和 content-box 之间的区别。
  9. css 有哪些选择器,优先级关系
  10. 下面的 div 标签显示什么颜色
.blue {
    color: blue;
}
.green {
    color: green;
}
.red {
    color: red;
}
<div class="red green blue">颜色</div>
  1. 变量提升问题
var foo = 'jd';
(function(f){
    console.log(foo);
    var foo = f || 'hello';
    console.log(foo)
})(foo);
console.log(foo)

不是这道题,但是类似。

  1. 原型和原型链?模拟实现一个 instanceof
  2. 闭包?出了一道题。
  3. 类型检测有哪些?typeof 检测的机制是什么?0.1 + 0.2 == 0.3 吗?为什么不等?
  4. this 指向问题,js 中有哪些方法可以改变 this 的指向,出了几道题。
  5. 浏览器的渲染原理,回流和重绘啥的
  6. 算法题:
    1)跳台阶。类似 lettcode
    这道题需要写出两种不同的解法,要求一种使用动态规划

2)第二道题忘记了,好像 easy 或是 mid 难度的题。

几分钟后发来二面链接。

二面:

  1. vue 源码相关的问题(因为一面面试官没有问,所以二面问了):
  2. vue 的响应式原理
  3. nextTick 的实现原理,(这里拉扯到了 Vue 更新的异步原理)
  4. vuex 原理和作用, vueRouter的原理(路由中 install 方法的原理) 和 生命周期啥的
  5. 计算机网络的一些问题。
  6. http 的某一些字段作用和场景和状态码啥的。
  7. tcp/utp(记得这对比了HTTP3的 QUIC协议)
  8. webpack 打包工具了解多少,这里问了好多。
  9. 场景题
    1) 实现一个9宫格,最少可以使用多少个 div ? (一开始回答错了,面试官说了3个就行,我愣了一下,说了一句重叠吗?他哈哈笑起来,说我可没有说过不能重叠。然后两个人又开始笑了起来😂)

2) vue 中的 vueRouter 怎么实现路由权限校验(写了伪代码)

  1. 算法题:只有一道忘了。

有一些记得不太清楚了。这里就不写上了

hr 面

hr 面很多是规划,兴趣爱好啥的。

字节飞书正式批

同样再次跪在二面,面完二面人都恍惚了。。。二面全程写题,题目并不能说难,只是比较绕。

爱奇艺

爱奇艺面试流程很长差不多两个月。。。。 3论技术+1轮HR面,流程太久了题目很多不记得了,只记住几道算法题

  1. 买卖股票的最佳时机 II
  2. 大数相加
  3. 无重复字符的最长子串
  4. 链表相关
  5. 实现深拷贝
  6. 编写 vue 路由的检验
  7. 怎么编写一个 vue 的指令(讲了内部的回调函数实现)

有赞

真觉得有赞的技术不错,开源的 vantUI 很有名气。面试的过程中和面试官很聊得来。有赞的面试很多也不太记得了,就不写了,大家需要的可以去牛客看看。

感谢

感谢秋招一路过来帮助过我的各位前辈。

真的很感谢 晓天 和 天天 大佬指导的简历修改,同时也很感谢掘金的各位前辈输出的优秀文章。

关于我

一个矫情的人写着不文艺的文字,看起来有些 emo,哈哈。有很多时候努力付出却没有回报的事情真的很多,像心心念念的 offer,像难得遇到喜欢的人,原本以为努力变的优秀事情会朝好的方向走,原本以为拿到好点的 offer 能有点改变,但事情并没有出现自己预料的走向,只能嘻嘻了。越想要的越得不到,这话很无奈,很丧气。最近在掘金沸点看到很多前辈们的情情爱爱,最后似乎并没有成功的,大抵是这种感觉吧。很可惜。接受要接受的,改变能改变的。这是成年人世界的失落和无奈。但是不管怎样,菜就去变强,不足就去弥补,这总不会错。

整个秋招的心情就像坐过山车一样,迷茫,彷徨,失落,自信,再次失落,再次自信。每每觉得没有选择的时候,老天像是和你开玩笑一样,再次向你脸上砸来一个机会。那时的我只想抓住他,无论怎样。秋招很激烈,很煎熬,过程很漫长。秋招伊始那个时候我还记得我曾和舍友说过可能找不到工作了,舍友漫不经心的来了一句,“我在见证一个大佬(菜狗)的成长”(我菜狗一个)。

我曾盼望着秋招结束后,去投喂图书馆沿路的小猫们,看着一窝窝的小猫崽出生到长大还蛮有趣的,也想呆呆的坐在图书馆里做着想做的事,一边看看坐在我前面爱傻笑的女孩儿。你是非常可爱的人,真应该遇到最好的人,我也真希望我就是。

3.jpg

大家加油,我们都会上岸的(希望舍友考研,考公都能上岸),毕竟乾坤未定。

                    我们一同喜欢着现在
                    我们曾经被别人取代
                    我们都有类似的遗憾
                    所以一起飘流在人海

我是林一一,下次见。噢,如果觉得还可以的希望 github star 啦

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant