快手-Acfun
一面
操作系统
- 进程与线程的概念
- 什么是死锁
- 造成死锁的原因是什么
- 如何解决死锁的问题
- 如何防止死锁产生
计算机网络
- OSI七层模型
- TCP/IP参考模型
- TCP的特性,为什么建立链接需要三次握手,断开4次挥手
- 什么是Https
- 简单说说TLS协议的工作流程
- 客户端如何判断服务端下发的公钥是没有被中间人篡改的
数据结构
- 如何判断两个单链表是否相交,返回相交的第一个节点,否则返回null
JS
- 阅读代码
题目1
js
var a = 1
var obj = {
fun:function(){
console.log(a)
},
a:2
}
obj.fun() // ?
js
var a = 1
function foo(){
console.log(a)
}
function bar(){
var a = 2
foo()
}
bar() // ?
题目2
js
function foo(){}
const bar = new foo()
bar.__proto__ === // ?
foo.__proto__ === // ?
foo.prototype.constructor === // ?
- 实现一个instanceOf(a,b)效果跟instanceof一样
- 事件触发的几个阶段是什么
- 什么是事件代理,他有什么优势
- 什么情况下使用冒泡,或者说为什么通常在冒泡阶段执行事件
- currentTarget与target的区别
- 实现一个demo html结构
html
<ul id='list'>
<li data-id>
<!-- 很多子节点,但不包含li -->
</li>
</ul>
要求点击li或者li中的任意子节点都能取到li上的data-id如何实现
js
// 实现代码
Vue
- 如何实现数据双向绑定的
- 组件之间通信有哪些方式
- 如何监听到数组的操作的
- 数组的哪些操作无法被监听到
Webpack
- 了解entry,loader,plugin的概念吗,分别做什么的
- 用过哪些loader,plugin
- 开发过loader,plugin吗
Node
- node了解吗,学过哪些相关的
- 了解node的多进程吗,如何实现
二面
综合
- 一个复杂的web工程,内部有很多的静态资源代码,js,css,html,image,用哪种数据结构可以准确描述所有静态资源之间的依赖关系
- 浏览器输入URL到页面展示整个阶段发生了什么
手撕代码
- 问题1
js
斐波那契数列示例:
1,1,2,3,5,8,13,21,34 。。。。
实现这样一个函数,得到指定位置上数列的值。
函数签名:function fib(index: number): number;
调用效果:
fib(2) => 1
fib(4) => 3
使用迭代实现
- 问题2
js
如果问题1中的参数和返回值调换一下,比如输入8得到该值在数列中的位置6,不存在则返回-1。
函数签名:function getFibIndex(value: number): number; 假定参数value大于1。
调用效果:
getFibIndex(4) => -1
getFibIndex(21) => 8
浏览器
阅读代码,10秒内用户能看到什么,并说明原因
- 示例1
html
<head>
<link rel="stylesheet" href="xxx.css"> 加载耗费10s
</head>
<body>
<p> 1 </p>
<p> 2 </p>
</body>
示例2
html
<head>
</head>
<body>
<p> 1 </p>
<script src='xxx.js'></script> 加载耗费10s
<p> 2 </p>
</body>
- 示例2
html
<head>
</head>
<body>
<p> 1 </p>
<script>
...code,执行了10s
</script>
<p> 2 </p>
</body>