头条、拼多多前端面经
字节跳动
一面
1.说出以下代码的原型关系,以及 Object 和 Function 的原型关系
Function; function test() { } var obj = new test(); __proto__ prototype
2.合并两个已排序的链表:递归解法、迭代解法
3.判断数组类型有哪些方法
4.webpack 常用 loader、plugin
5.Promise 中抛出异常能否被 catch 捕获?
let promise = new Promise((resolve, reject) => { throw new Error() reject() }) promise.catch(err => { console.log(err) })
6.冯诺依曼体系讲讲
7.线程与进程的区别
8.操作系统为什么要设计用户态和内核态?
二面
1.讲讲模块化规范
2.import 和 require 的区别
3.require 是如何解析路径的?
4.模拟实现 new 操作符
5.算法:找出字符串中第一个不重复的字符
6.promise 考察
用promise实现以下功能。 具体: fn1和fn2都是异步函数,f1、fn2同时执行,并且fn1、fn2的结果是 fn3的参数。当fn1或者fn2发生错误时,fn3照常执行,此时的参数为空。 eg: fn1 = async() => { // 发送请求 const data = await sendRquest1(); return data; } fn2 = async() => { // 发送请求 const data = await sendRquest2(); return data; }
7.下面代码的输出,why?
'use strict'; var b = 2; if (true) { let a = 2; var b = 3; var c = 4; const d = 5; } console.log(a); console.log(b); console.log(c); console.log(d); var d = 6;
8.节流防抖,手写
9.列举获取 DOM 元素的方式
10.react 生命周期,HOC
三面
老哥太好了基本在聊天...
1.node 中间件原理
2.写一个中间件,怎么使用?
3.webpack 打包整体流程
4.两道简单的算法题:层次遍历二叉树、反转链表
5.项目中 cookie + redis 实现自动登录怎么做的?
6.常见 web 安全问题,xss、csrf、sql 注入、数据库加密、cookie 加密及防范措施
7.为啥学前端?
8.以后有什么打算?
9.有和别人协作的项目吗?
小结
头条比较注重基础知识和编码能力和一些基础算法能力,希望能过吧......之后还有拼多多的面试也会发在这里。
拼多多
一面 电话面试
1.项目问题:IndexedDB 和 localStorage 使用的区别
2.图片懒加载思路,监听页面滚动实现的,怎么做优化?除了节流?除了监听页面滚动有没有其他方案?
3.前端监控是啥?让你设计一个 SDK 给别人用(自己设计一个前端监控库怎么做?)
4.添加事件处理程序有哪些方案?区别?
5.给一个 DOM 添加多个 click 事件,不能用 addEventListener,只用 onClick 咋整?
6.发布订阅模式,嘴巴撕
7.聊天室用了 WebSocket,说一说
8.最后说第 5 个问题可以用发布订阅的思路来实现
感觉凉凉 -.-
问了几个问题:
- lodash 还用吗?答:ES6 提供了新的 API 基本能满足需求,用的比较少了
- typescript 啥时候用?答:项目比较大的时候,对数据类型要求严格的情况下使用
分享
咱压箱底的宝贝分享给大家啦,攒攒人品......
https://github.com/ChenMingK/Blog
随便贴两个常见问题吧:
- CSS 隐藏元素有哪几种方式?它们的区别?
- 为什么实际应用中 Last-Modified 和 etag 都会使用到?
主要是因为如果文件内容被修改了但是实际上并没有变化,比如删掉一个字符 a 又填上去,该文件的 Last-Modified 会发生变化,但是 Etag 不会变。
下面贴两段介绍吧:
☝ Last-Modified / If-Modified-Since:Last-Modified
表示本地文件最后修改日期,If-Modified-Since 会将上次从服务器获取的 Last-Modified 的值发送给服务器,询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来。
但是如果(服务器)在本地打开缓存文件(或者删了个字符 a 后又填上去),就会造成 Last-Modified 被修改,所以在 HTTP / 1.1 出现了 ETag。
☝ Etag / If-None-Match:
ETag类似于文件指纹,If-None-Match 会将当前 ETag 发送给服务器,询问该资源 ETag 是否变动,有变动的话就将新的资源发送回来。并且 ETag 优先级比 Last-Modified 高。
由于 etag 要使用少数的字符表示一个不定大小的文件(如 Etag: "58c4e2a1-f7"),所以 etag 是有重合的风险的,如果网站的信息特别重要,连很小的概率如百万分之一都不允许,那么就不要使用 etag 了。使用 etag 的代价是增***务器的计算负担,特别是当文件比较大时。
最后祝大家 offer 多多啦( ̄▽ ̄)~*
#字节跳动##秋招##面经##前端工程师##求面经##拼多多#