Skip to content

快手-Acfun

一面

操作系统

  1. 进程与线程的概念
  2. 什么是死锁
  3. 造成死锁的原因是什么
  4. 如何解决死锁的问题
  5. 如何防止死锁产生

计算机网络

  1. OSI七层模型
  2. TCP/IP参考模型
  3. TCP的特性,为什么建立链接需要三次握手,断开4次挥手
  4. 什么是Https
  5. 简单说说TLS协议的工作流程
  6. 客户端如何判断服务端下发的公钥是没有被中间人篡改的

数据结构

  1. 如何判断两个单链表是否相交,返回相交的第一个节点,否则返回null

JS

  1. 阅读代码

题目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 === // ?
  1. 实现一个instanceOf(a,b)效果跟instanceof一样
  2. 事件触发的几个阶段是什么
  3. 什么是事件代理,他有什么优势
  4. 什么情况下使用冒泡,或者说为什么通常在冒泡阶段执行事件
  5. currentTarget与target的区别
  6. 实现一个demo html结构
html
<ul id='list'>
    <li data-id>
        <!-- 很多子节点,但不包含li -->
    </li>
</ul>

要求点击li或者li中的任意子节点都能取到li上的data-id如何实现

js
// 实现代码

Vue

  1. 如何实现数据双向绑定的
  2. 组件之间通信有哪些方式
  3. 如何监听到数组的操作的
  4. 数组的哪些操作无法被监听到

Webpack

  1. 了解entry,loader,plugin的概念吗,分别做什么的
  2. 用过哪些loader,plugin
  3. 开发过loader,plugin吗

Node

  1. node了解吗,学过哪些相关的
  2. 了解node的多进程吗,如何实现

二面

综合

  1. 一个复杂的web工程,内部有很多的静态资源代码,js,css,html,image,用哪种数据结构可以准确描述所有静态资源之间的依赖关系
  2. 浏览器输入URL到页面展示整个阶段发生了什么

手撕代码

  1. 问题1
js
斐波那契数列示例: 
112358132134 。。。。
实现这样一个函数,得到指定位置上数列的值。
函数签名:function fib(index: number): number;
调用效果:
fib(2) => 1
fib(4) => 3

使用迭代实现
  1. 问题2
js
如果问题1中的参数和返回值调换一下,比如输入8得到该值在数列中的位置6,不存在则返回-1
函数签名:function getFibIndex(value: number): number; 假定参数value大于1。
调用效果:
getFibIndex(4) => -1
getFibIndex(21) => 8

浏览器

阅读代码,10秒内用户能看到什么,并说明原因

  1. 示例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>
  1. 示例2
html
<head>
</head>
<body>
    <p> 1 </p>
        <script>
            ...code,执行了10s
        </script> 
    <p> 2 </p>
</body>