【回馈牛客】腾讯+网易前端面经

有点久了,是提前批面的,两家都过了hr面,网易投的网易云(被刷),腾讯投的SNG在线教育部(意向书)。
不过给大家正式批的参考一下还是有价值的。

网易
一面:
1.手写Promise.all
Promise.all = (list) => {
    return new Promise((resolve,reject) => {
        const results = [];
        let count = 0;
        list.forEach((item, index) => {
            item.then((res) => {
                results[index] = res;
                if (++count === list.length) {
                    resolve(results);
                }
            }, (rej) => reject(rej));
        });
    });
}
2.什么是防抖,什么是节流
节流(throttle),单位时间内只执行目标函数一次;
防抖(debounce),***作(如点击)后经过某个时间才执行函数,连续***作会刷新这个时间。换句话说,你越点我,我就越不执行。
3.React受控组件和非受控组件
受控组件,受到props控制的,如受控翻页组件,翻页按钮点击之后向后台请求数据,请求成功后props传入页码变化,组件内容变化。这样不会出现翻页控件翻页成功而数据没有刷新的情况。
非受控组件,状态由自己控制,存在组件state中,可以由props赋初始值。如日期选择组件。
4.除了Promise还有别的方法异步吗?
setTimeout、async、xhr.open(method, url, true)
5.acync await如何并行?
const foo = async () => {
    const foo1 = new Promise((resolve) => setTimeout(resolve, 1000)).then(() => { console.log(1); });
    const foo2 = new Promise((resolve) => setTimeout(resolve, 1000)).then(() => { console.log(2); });
    await foo1;
    await foo2;
}
6.HTTP新增方法
  1. GET:获取资源
  2. POST:传输实体文本
  3. HEAD:获得报文首部
  4. PUT:传输文件
  5. DELETE:删除文件
  6. OPTIONS:询问支持的方法
  7. CONNECT:要求用隧道协议连接***
这个主要是为了语义化。

7.跨域CORS
简单请求(GET、POST、HEAD ,只限于formdata和text),头部加个Origin就好。

Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。
回应的头信息没有包含Access-Control-Allow-Origin字段,就知道出错了,从而抛出一个错误
如果Origin指定的域名在许可范围内,服务器返回的响应,会多出几个头信息字段。

Access-Control-*
非简单请求(PUT、DELETE等,JSON类型)
会发送一个OPTION预检请求

下面是这个"预检"请求的HTTP头部部分信息。

OPTIONS /cors HTTP/1.1 Origin: http://www.demo.com  -->表示请求来自哪个源。 Access-Control-Request-Method: PUT  -->该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法,上例是PUT Access-Control-Request-Headers: X-Custom-Header  -->该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段,上例是X-Custom-Header Host: api.alice.com
成功后会有类似简单请求的回应,否则返回一个正常的http回应,浏览器没有检测到跨域信息,就会报错。

*如果要附带cookie,需要服务器设置允许,客户端设置xhr.withCredentials = true;

8.decorator,HOC,mixins
这个太多了,建议自己查

9.react的setState是异步还是同步?怎么实现的
说了个大概

提问环节:
我:网易这边有用过SSR吗?
SSR?有的项目有用
我:是用的框架还是自己写的?
框架。
我:我觉得next.js不好用,太过封装不自由
我发现你对ssr挺感兴趣的
我:因为我最近在写blog,用ssr做seo,所以就自己写了个

二面:
1.es6熟悉吗?知道Symbol吗?
symbol是新增的基础数据类型,具有唯一性,用于元编程。例如,表达式 [] instanceof Array 将会调用 Array[Symbol.hasInstance]([])
2.拖拽,右键菜单(oncontextmenu事件),批量下载(后台打包支持),批量上传(队列),同步上传(xhr.open第三个参数false)
3.上传大文件(不知道,这个应该有专门的api,可分块上传)
4.实习遇到的难点
(2,3,4都是根据项目来的,参考性不大,主要注重问组件化开发)
手撕代码:
1.一个数组,里面的数是唯一的,现在传一个参数进去,找到数组内部的两个数(必定唯一,不必考虑多种情况),使他们的和等于这个参数。
我直接暴力法。
2.翻转数组指定区间的数
function reverse(array, start, end) {
    let i, j;
    for(i = start, j = end; i <= j; i++, j--) {
        [array[i], array[j]] = [array[j], array[i]];
    }
}
除了这种交换还有没有别的方法?第三个参数。不用第三个参数呢?加减法。(a = a + b; b = a - b; a = a - b;)

提问环节:
我:网易有用自己的技术栈吗?
有,xxx。
我:是个什么样的呢?
类似Vue。
我:和Vue相比有什么优势吗?
和Vue差不多。
我:那为什么不用Vue?
额……这个,自己写的要熟悉点
我:……
我:没有问题了,谢谢!

三面hr:
1.职业规划
2.为什么选择网易
3.内部晋升发展规划
4.优缺点

提问环节:
我:云音乐有什么部门可以介绍下吗?
音乐直播、音乐社区……(蛮多的)
我:音乐直播好像很有意思,是指直播唱歌吗?
是的,你之前在快手应该对这个有了解
我:音乐社区和知乎差不多吗?
(我忘了)

腾讯
(8-14开始的,忘得差不多了)
一面:
1.window.addEventListener和element.on***有什么区别?
前者可以重复绑定,并且可以设置捕获
2.一个list,点击输出里面的文本
这里用了事件委托
<ul>
    <li></li>
    ...
</ul>

document.querySelector('ul').addEventListener('click', (e) => {
    console.log(e.target.textContent) })
...
5.webpack的插件写过吗?没有。那loader呢?没有。

二面:
1.vue和react的区别
状态,数据流,语法,等等
2.react的diff算法
用对象表示节点,比较新旧对象,记录不同***作(增,删,改),插入key唯一标识方便更新,最后update。执行diff算法是从旧对象向新对象的一个靠近。
具体还是去看下源码。参考https://zhuanlan.zhihu.com/p/27437595
3.王者荣耀有个活动要做实时排行榜,怎么做排序
我开始想歪了,以为要大数据排序,后来面试官说来一个排一个就是。。。。
4.如何把数据实时更新过去?
websocket。
每一个用户都增加一个连接服务器负载很高吧?
可以复用游戏主链接
OK
5.问一个经典的问题,从输入url到拿到页面(送分的,不多说)

hr面:
省略一些标准问题
1.你对我们部门的业务有了解吗?
(无明确意向)这个确实不是很了解
2.那你为什么选择我们部门?
部门技术实力比较强,团队氛围好
3.你有什么问题想问我吗?
可以简单介绍下部门业务吗

等到9-12号,突然加面
面委会常规加面(非target学校):
1.tcp三次握手
syn=1,seq=x;syn=1,seq=y,ACK=1,ack=x+1;ACK=1,seq=x+1,  ack=y+1
2.http2.0
多路复用,流传输,全双工,二进制分帧
3.tcp和udp区别
前者可靠传输,有差错校验、拥塞控制和重传,但速度慢。后者无校验,头部只有源和目的地址+端口信息,速度快,都属于传输层。
(说的比较浅)
4.数据结构学了哪些?
栈,队列,链表,树。
循环链表和双向链表说下吧
循环链表,尾部的next指向头部;双向链表,新增一个指针指向祖先节点;
5.***作系统学过哪些?
记不太清了,有死锁,进程控制,银行家算法
死锁是什么?
例如有两个进程,A和B都需要资源a和b各10个,A占用资源a10个,B占用资源B10个,然而A和B必须等资源都满足才会执行,现在A和B都在等待对方的资源,会造成无限等待,就是死锁
银行家算法?
资源分配算法,进行资源预分配,如果分配资源不满足这个进程,则分配失败。(早就忘得差不多了
6.知道哪些排序算法
快排,插入,选择,归并,希尔,堆,桶,冒泡,计数,基数。
说下快排和选择排序
7.浏览器缓存
强缓存,协商缓存
协商缓存:
last-modified,etag
强缓存:
expires, ***-control
都具体说了,太多了,自行查资料
7.了解部门是做什么的吗
巴拉巴拉
8.有什么问题问我吗?
没有问题的(问dalao问题只能拉低自己的水平2333)

#腾讯##面经##网易##前端#
全部评论
大佬,函数节流和防抖是不是反了
点赞 回复
分享
发布于 2018-09-25 13:24
腾讯拿offer了吗
点赞 回复
分享
发布于 2019-04-02 12:57
小红书
校招火热招聘中
官网直投
哈哈哈大佬提问环节666
点赞 回复
分享
发布于 2019-08-05 17:53

相关推荐

探索新世界,开启美好未来一、关于高德高德地图是中国领先的数字地图内容、导航和位置服务解决方案提供商,致力于打造以用户为核心的“出门好生活开放服务平台”。&nbsp;除地图导航外,高德地图还为用户提供打车、酒店、门票、加油等生活服务,为国内所有主流汽车厂商提供车载导航相关服务,为绝大多数主流移动应用提供位置服务。为什么加入我们?●&nbsp;亿级用户出行量级、超复杂的业务场景;●&nbsp;发挥创造力的机会、巨有成就感的体验●&nbsp;实习转正offer、一对一导师辅导、多元的成长课程●&nbsp;丰富多彩的兴趣派、好玩的团建和好玩的同事二、招聘对象面向2025届应届毕业生(2024.11-2025.10毕业的海内外应届毕业生)三、招聘岗位(待定需要改)算法类(大模型、多模态、机器学习、视觉、图形、渲染引擎、NLP、语音)研发类(JAVA、前端、测试开发、GIS、C++、数据研发)产品经理(用户型、平台型)服务流程数据分析四、工作地点北京高德总部、杭州五、校招流程网申/内推:&nbsp;&nbsp;&nbsp;2024.03.06&nbsp;开启在线测评:&nbsp;&nbsp;&nbsp;&nbsp;2024.03-2024.05(通过简历筛选的同学,投递次日收到测评通知)在线笔试:&nbsp;&nbsp;&nbsp;&nbsp;2024.03-2024.05(研发岗位需笔试,具体以通知邮件为准)面试时间:&nbsp;&nbsp;&nbsp;2024.03开始实习offer发放:&nbsp;2024.04开始六、简历投递渠道1、校招官网投递:登录高德地图招聘官网进行投递,或扫描下方二维码进入官网投递&nbsp;。https://talent.amap.com/campus/home?lang=zh2、内部推荐:将简历发给高德的师兄/姐,请TA帮你完成投递。七、更多秋招答疑1、秋招FAQ可登录【校招官网】-【通知专区】查看2、发送邮件至Amap_talent@autonavi.com进行咨询3、扫描下方二维码关注【高德地图招聘】公众号进行留言咨询
点赞 评论 收藏
转发
7 150 评论
分享
牛客网
牛客企业服务