头条、拼多多前端面经

字节跳动

一面

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 多多啦( ̄▽ ̄)~*

图片说明

#字节跳动##秋招##面经##前端工程师##求面经##拼多多#
全部评论
这只头条? 那为啥用红黑树***呢
点赞 回复
分享
发布于 2019-08-26 22:43
赞一个  
点赞 回复
分享
发布于 2019-08-26 22:43
联易融
校招火热招聘中
官网直投
请问你面的哪个部门呀
点赞 回复
分享
发布于 2019-08-26 23:06
前端还要问操作系统 自闭了
点赞 回复
分享
发布于 2019-08-26 23:24
你真的好厉害呀,学习学习
点赞 回复
分享
发布于 2019-08-27 00:24
二年开始算法 比你难多了
点赞 回复
分享
发布于 2019-08-27 06:58
恭喜恭喜
点赞 回复
分享
发布于 2019-08-30 20:58
拼多多二面 https://www.nowcoder.com/discuss/243604
点赞 回复
分享
发布于 2019-09-03 23:29
我感觉我们面的是同一个部门,也是上海的,题有些是一样的,昨天一二面结束,今天通知三面,希望能拿offer,请问你是三面结束多久后给你发意向书的啊
点赞 回复
分享
发布于 2019-09-17 08:06
想问下PDD第五题怎么答啊😂昨天美团也被问到这个了
点赞 回复
分享
发布于 2019-09-17 09:54

相关推荐

点赞 评论 收藏
转发
8 125 评论
分享
牛客网
牛客企业服务