本文会记录我秋招过程中一些面试经验和感受,大部分问题是没有答案的,但是可以在我博客页面进行翻阅,对应公司面经都有解答。感谢您的阅读~

没有比脚更远的路,没有比人更高的山!

字节跳动-广告系统-商业平台

介绍

春招那会面了一次字节,看我往期博客就造了,那时候一面就凉了,但秋招提前批的时候,也是在恒生那边实习的时候,北京 HR 打电话过来约面试,于是约到了 8 月 27 日晚上。

一面

面经

1、自我介绍

2、手撕防抖(如果滚动条判断一个 div 是否存在会用什么来做?节流)

3、CSS 实现三角形

4、了解伪元素和伪类吗?

5、 盒模型

6、Vue 双向绑定实现 Object.defineProperty() 它有哪些不足点?

7、Koa 中间件 passport

8、仿美团项目登录怎么实现的

9、cookie 和 session 区别(session 存放哪)

10、如何保护 cookie

11、浏览器缓存 强缓存 和 协商缓存 状态码

12、HTTPS 中 TLS 握手过程简述

13、 询问输出结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function Foo() {
getName = function () {
alert(1);
};
return this;
}
Foo.getName = function () {
alert(2);
};
Foo.prototype.getName = function () {
alert(3);
};
var getName = function () {
alert(4);
};
function getName() {
alert(5);
}

//请写出以下输出结果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

14、 promise 相关,下面代码输出结果

1
2
3
4
5
6
Promise.reject(2)
.catch((e) => e)
.then((d) => {
console.log(d);
});
// 输出

15、你还有什么要问我的吗?

感受

自认为前一部分答的还不错,手撕防抖那里没啥问题,与面试官进行了交流。但后面有点拉胯。询问结果那块答的不是很好,没想到还是让我过了一面。

二面

面经

开篇没有自我介绍,面试官直接说一面问的比较简单,我来考察一下。

1、考你一点操作系统知识,你知道进程和线程吗?它们有什么区别联系?

2、进程间通信有了解过吗?

3、说说网络吧,你知道子网掩码这个概念吗?这个出错了会怎么办?是访问不了内网还是外网还是怎么?

4、刚刚说了 ABC 类地址,你知道这个是怎么区分的吗?

5、你怎么学习前端的?

6、那你有了解过 BOM 和 DOM 吗?

7、有了解过 map 吗?那你知道 Map 和 WeakMap 的区别吗?

8、你刚刚讲到了垃圾回收,那你知道 v8 垃圾回收机制吗?说说

9、你了解 class 吗?你能模拟实现它的私有属性吗?让他具有 private 功能

10、ES5 中的继承实现方式

11、提供类似框架,实现时间过滤器

1
2
3
4
5
6
7
8
9
10
11
class DateHelper {
/**
* 将 UNIX timestamp 时间标签转换成 formatter 格式
* @param {Number} 时间标签 e.g. 1463368789
* @param {String} 格式 e.g. 'yyyy-mm-dd hh:MM'
* @returns {String} e.g. '2016-05-16 18:17'
*/
timestampConverter(timestamp: number, formatter: string): string {
// write code here
}
}

12、算法题

1
2
3
给定一个整数数组nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

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

这道题卡了一小会,但最后还是以 O(n)时间做出来了

13、设计题

微信扫描二维码登录网页是什么原理,前后两个事件是如何联系的?

场景是一台手机(已经登录了微信),PC 端服务器,微信服务器,网页二维码。你怎么处理这四者的关系,不牵扯到网络,中间人攻击层面来讲。

这题想了挺久,不断尝试去套面试官的话,不过后面面试官说我还是猜到了一点点。

14、你还有什么要问我的吗?

请教了一下最后那个设计题的简单思路,我是最后结束了才明白场景居然是那样,不过面试官那边确实有点吵,一些点也没抓住。

参考知乎:微信扫描二维码登录网页是什么原理,前后两个事件是如何联系的?

感受

这…我原本以为二面也会是一些基础题,毕竟看了那么多面经,但发现事情没这么简单,上来就聊了操作系统,然后逐步深入,计算机网络那块,我主要是准备了 HTTP、TCP 那些网络协议相关,子网那些没怎么看都忘了。

甚至觉得这位面试官操作系统、网络这块挺 6 的,底层那些东西都能扯到,很少见到前端面试官会谈及这些问题,受教了受教了。

另外,还是有一点紧张,毕竟这是我第一次二面,我以为二面会扯到我的项目,我还准备了许久,但没有牵扯到这块,看别人面经都会问许多 HTTP、TCP、握手、缓存这块,这块我真的是熟的不能再熟悉了,也许运气不太好。不管最后结果如何,我也增加了一次二面的经验,后续也会越来越好的。

腾讯-QQ 音乐

介绍

腾讯这块也是误打误撞,原本我只是想在官网更新一下简历,没想到跟着春招那会直接又投了,于是收到了 8 月 28 日(周五)早 10 点 30 电话面试,春招那会也有一次电话面试,面完就 GG 了,这次同样…

一面

面经

1、自我介绍

2、了解 ajax 跨域嘛?

3、cors 跨域怎么做?

4、说说 jsonp 原理

5、如果是用 node 来做跨域的话,你会怎么做?

6、怎样给一个新增的 dom 节点绑定事件?(询问事件代理的作用)

7、了解浏览器缓存吗?(强缓存、协商缓存)你怎样更新强缓存呢?

8、如何检测 JS 错误,如何保证你的产品质量?(错误监控)(仅仅答了 window.onerror)跨域的 js 运行错误可以捕获吗,错误提示什么,应该怎么处理?

感受

腾讯给我面试体验依旧不是很好,字节一面会有一个引导的过程,原本我不太清楚的地方,但面试官引导了一下,一下就想起来了。况且这次面试,一上来就怼跨域,项目中怎么做的,难度一个台阶一个台阶的涨,最后面试官回应:了解差不多了,后续有通知再联系。 也没有常用语:你还有什么要问我的吗? 总之,面试体验不是很好,但面试官提出的几个问题却很经典,后续又学习整理了一下。

阿里智能事业群-达摩院-机器智能技术部

介绍

这个是来自 BOSS 直聘上的内推,一位前端主管邀请的我投递,反正都是试一试,增加面试经验,于是在 8 月 29 日(周六)下午 3 点进行了 30 分钟左右的短暂面试。

一面

面经

1、自我介绍

2、聊实习经历

3、项目中有用到 SSR,说说对 SSR 的理解,目前为什么要用 SSR?

4、对 CDN 的理解

5、说一个最近刷的印象比较深刻的 leetcode 题目,讲讲思路

6、大学里面学的一些课程哪门最熟悉?

7、说说五层、七层 计算机网络模型

8、举例传输层和应用层

9、HTTP1.0 和 HTTP2.0 区别有了解吗?

10、自己搭的博客目的是什么?主要写的内容是?

11、询问了大学里面图像处理课程

12、如何学习前端(或者说是如何学习计算机领域知识)

13、对未来的职业规划

14、你还有什么要问我的吗

感受

相对于字节二面来说,这一面我没有很紧张,反而在面试之前是一个很放松的状态。与面试官交流的也是比较流畅,对我了解了一些大学课程学习,然后对于图像处理那块细问了一下,毕竟部门研究的就是那一块。

滴滴-橙心优选 面经

介绍

先说一下最终结果吧,第三面凉了。9 月 5 号下午 1 点开始,一直到下午 4 点 20 样子,持续三轮面试,最终倒在了第三轮。感受与总结我就放在最后吧。总体来说问的比较基础,没有深度挖掘知识点。另外,已经过了一天了,还是三面一起来的,可能会有问题遗漏掉,一般来说遗漏掉的都是比较简单,能轻松说出来的那种。

一面

面经

1、自我介绍
2、JS 基本数据类型(怎么判断基本数据类型)
3、说说你对原型和原型链的理解
4、水平垂直居中的几种方式,说一说
5、说说你对深浅拷贝的理解(要求手撕深拷贝)
6、输入一个 URL 到渲染页面的整个过程
7、浏览器缓存有了解过嘛?说说看
8、说一个你熟悉的排序算法,然后手写一下(简单写了一个冒泡)

感受

一面问的比较基础,也是比较顺利收到了二面通知

二面

面经

1、自我介绍
2、CSS 选择器优先级的理解
3、CSS 定位的几种方式
4、CSS 怎么清除浮动
5、display 几种属性说一说
6、水平垂直居中的几种方式
7、父容器已知宽高,子容器宽高未知,怎样让子容器水平垂直居中
8、css modules 你有了解过吗
9、如果组件 css 命名冲突,你怎么解决
10、设计模式你有了解过吗?说说单例模式
11、call、apply、bind 的区别
12、普通函数和箭头函数的区别
13、项目中有用到 debounce,那你写一下防抖吧
14、实现如下效果:当点击 aaa 时输出 0 ,当点击 bbb 输出 1,当点击ccc 输出 2

1
2
3
4
5
<ul>
<li>aaa</li>
<li>bbb</li>
<li>ccc</li>
</ul>

15、for 遍历时,如果用 var 来声明变量 i 会有什么问题,怎么解决这个问题?
16、浏览器缓存你了解多少,说说看
17、谈谈你对 cookie 的理解,cookie 有哪些字段,说说看
18、cookiesession 的区别

感受

感觉有些问题,答的不是很好,但过了二面,手撕那块没啥问题。

三面

面经

1、自我介绍
2、聊大学经历
3、你觉得学的最好的一门课

因为网络这块知识准备的比较充足,就选了计算机网络,其它的与前端不太挂钩,也不太好扯。

4、面试官对网络这门课教学方式很感兴趣,于是扯了挺久,扯到了网络建设项目(校运动会举行),扯到了最后排名,与第一名的差距在哪
5、如果要你给一个非科班的人,讲网络这门课,你会怎么讲?
6、网络里面你认为的最熟悉的章节(说了 HTTP、TCP 这块)
7、那你说一下对称加密和非对称加密。为什么非对称加密更好,现在还是有用对称加密,你能说出原因吗?最好举一下生活中的例子
8、你算法和数据结构咋样,做一道题吧

上来就来了一道动态规划的题,想了一下,没啥思路,面试官就换了一道题

9、算法题:求两个数组的交集

感受

10 分钟后收到了感谢信,这效率是真高啊。原以为秋招以收到滴滴意向书结束,但没想到还是倒在了三面这最后一步了。收到后不甘心是当然的,但是面试后的复盘是很重要的。

快手-效率工程面经

介绍

8 月 25 日(周二)投递,在 9 月 8 日上午收到 HR 电话,告知简历通过了,约 9 月 10 日上午 11 点面试,整个面试时间 1 个小时左右。

一面

面经

1、自我介绍
2、你刚刚提到了项目中防抖 debounce ,你知道实现原理是什么吗?说一说
3、你家乡在哪?面试岗位在北京,有没有城市要求吗?
4、实现一个函数,以字符串形式返回参数类型

1
2
// null => 'null' undefined=>'undefined'
function getArgType(arg) {}

5、给你一个数组 [1,3,2,5] 你有多少种方法,求得最大值,说一说
6、实现如下效果:当你点击 ul 下面某个 li后,打印对应索引值(可以为 01

1
2
3
<ul><li></li>........</ul>
<ul><li></li>........</ul>
<ul><li></li>........</ul>

7、使用 vue 封装一个组件,实现倒计时的功能

1
2
3
4
5
倒计时(一个 button 按钮,有下述三种状态)
(开始-》暂停-》继续)

{count}
按钮

8、你还有什么想问我的吗?

感受

问了部门是效率工程,然后主要业务是做公司内部系统,比如各种流程处理,请假那些,然后还提到了公司封装内部聊天工具,类似于企业微信那种。然后还问了技术栈,主要用 React + Ts ,然后面试官说了技术栈都不是太大问题,主要还是 js 能力

最后,问了一下多久会有面试结果,面试官说一天之内给结果。