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

有点久了,是提前批面的,两家都过了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)

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

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本&nbsp;专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴&nbsp;快手&nbsp;去哪儿&nbsp;小鹏汽车&nbsp;不知名的一两个小厂其中字节13场&nbsp;两次3面挂&nbsp;两次2面挂&nbsp;一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂&nbsp;最后一次到录用评估&nbsp;至今无消息滴滴三面完&nbsp;没几天挂了&nbsp;所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通&nbsp;至今无消息小鹏汽车hr&nbsp;至今无消息美团2面挂&nbsp;然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂&nbsp;这个是我菜,面试官太牛逼了拼多多二面挂&nbsp;3道题也全写了&nbsp;也没问题是回答不出来的&nbsp;泡一周后挂腾讯面了5次&nbsp;一次2面挂&nbsp;三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
02-07 12:06
已编辑
华侨大学 测试开发
最近看到很多&nbsp;92&nbsp;的,甚至是硕士,开始往测开赛道卷,说实话有点看不懂。先把话说清楚,大厂里的测开,绝大多数时间干的还是测试的活,只是写点自动化脚本、维护测试平台、接接流水线,真正像开发一样做系统、做架构、做核心平台的测开少得可怜,基本都集中在核心提效组,而且人很少,外面进去的大概率轮不到你,我想真正干过人都清楚。很多人被洗脑了,以为测开也是开,和后端差不多,只是更简单、更轻松、还高薪。现实情况是,测开和开发的职业路径完全不一样。开发的核心是业务和系统能力,测开的核心是稳定性和覆盖率,前者是往上走,后者天花板非常明显。你可以见到很多开发转测开,但你很少见到干了几年测开还能顺利转回开发的。更现实一点说,92&nbsp;的高学历如果拿来做测开,大部分时间就是在做重复性很强的杂活,这种工作对个人能力的放大效应非常弱。三年下来,你和一个双非的,甚至本科的测开差距不会太大,但你和同龄的后端、平台开发差距会非常明显。这不是努不努力的问题,是赛道问题。所谓测开简单高薪,本质上是把极少数核心测开的上限,当成了整个岗位的常态来宣传。那些工资高、技术强的测开,本身就是开发水平,只是挂了个测开的名。普通人进去,99%&nbsp;做的都是项目兜底型工作,而不是你想象中的平台开发。测开不是不能做,但它绝对不是开发的平替,也不是性价比最优解。如果你是真的不想做开发,追求稳定,那测开没问题。但如果你只是觉得测开比后端容易,还能进大厂,那我劝你冷静一点,这只是在用短期安全感换长期天花板。有92的学历,如果你连测开这些重复性工作都能心甘情愿接受,那你把时间精力用在真正的开发、系统、业务深度上,回报大概率比卷测开要高得多。想清楚再下场,别被岗位名和话术带偏了,就算去个前端客户端也是随便占坑的,测开是一个坑位很少赛道,反而大面积学历下放,不用想也能知道会是什么结果,我想各位在JAVA那里已经看到了
小浪_Coding:工作只是谋生的手段 而不是相互比较和歧视
点赞 评论 收藏
分享
评论
7
150
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务