Skip to content

20210311腾讯北极光工作室前端开发

琉 雪蒂 edited this page Mar 12, 2021 · 1 revision

2021/3/11 13:00 - 14:00

0.前言

  • 关于本人:在校大三学生,写过简单的react项目,处于能对着文档撸页面的阶段,对浏览器原理,react原理和js的底层细节了解很少,css一窍不通。

  • 关于面试:春招面试,腾讯北极光工作室的前端开发岗,主要做游戏的宣发页面和广告页面等。

  • 关于面试官:面试官有两位,一位是前端负责人,另一个似乎是一线开发人,俩人在一张桌子前面试。面试官hin温柔。面试过程主要是负责人问问题,开发旁听。能明显感觉到面试官有意的降低题目的难度。

  • 关于记录:这篇记录是面后回忆,可能有很多不准确的地方。记录的顺序是整理过的,尽量把问题按专题分类了,因为回忆不起正确的顺序)有些问题会附我当时给的答案或者我认为的标答,实际上面试官没有指出或纠正我的任何问题。

1.自我介绍

没有自我介绍,社恐狂喜

2.项目经历

面试官听你介绍一下项目主要是做什么的,用了哪些技术,全程聆听,很少提问。

3.问题

1.框架相关

  1. 介绍下React的组件生命周期?(我的项目用的react)

  2. 有了解过关于这方面的新技术吗,如Vue-3.0(虽然已经发布很久了

  3. 有用过three.js吗?如何导入、展示、旋转一个3d模型?(他把我unity3d的项目误以为是B/S的了)。

  4. 为什么使用了SSR(ServerSideRender)架构?它的主要应用场景有哪些?使用它会不会给你的项目带来负收益?

    //这里我答的SSR的应用场景是网页短时间内不发生改变,并且静态资源多,与后端交互少的情况。项目本身是车企的中台数据分析平台,我结合这点说它的数据部分是在大数据库内,前端首页展示部分很少改动,所以不会带来太多负收益。

  5. 了解Vue吗?//读过但没写过,Vue的代码更注重可读性,偏离原生的js。recat中使用JSX作为Html和js的桥梁,而Vue则用类似的形式将js内嵌到html中去,使得整个代码的形式更像Html,可读性提升。

2. 浏览器相关

  1. 浏览器从输入URL到展示出可交互的网页的主要流程? //DNS解析,TCP连接,HTTP请求,渲染引擎解析HTML,js引擎跑js脚本,生成DOM-Tree。答完上边一串我提到这之中有一些缓存的机制。
  2. ——浏览器对于DNS解析有缓存吗? —DNS缓存是DNS服务器的缓存内容,服务器如果缓存不命中会递归查询,向上一级级查询。 ——浏览器内部在查找DNS缓存时有什么机制吗? —不了解
  3. 浏览器请求的状态码200、201、202分别代表什么?
  4. 浏览器的事件流了解吗?(Dev-Tool里见到过,不太了解)

3. js相关

  1. js发送请求用的什么,了解底层吗? —只了解到XMLHttpRequest ——那常见的请求方式或者库有哪些 —ajax、HMLHttpRequest、fetch、axios(并非并列关系) ——你倾向于用哪种? —axios,封装的更干净,用起来方便,可以直接用Promise
  2. Promise了解吗?写过原生Promise吗? ——自己学的时候写过,项目中还是用的封装好的库。 如果有代码setTimeout内部先alert了又new了Promise,那执行顺序如何? ——Promise会先执行 为什么?了解过eventloop吗? ——不清楚,没学到过。
  3. ——es6的新机制用过吗? —用过解构赋值//const {key} = {key:1,value:2,}(但是忘记谈let和const,其实这俩用的最多)还有...运算符,在参数列表的时候还有扩展数组时用过,还可以做深拷贝(其实不能) ——...可以做到深拷贝吗? —(意识到说错了)不是深拷贝,是获得一个数组的副本,数组里的元素还是引用原来的。主要是为了给react中的state做副本,进行复杂的修改操作。

4.css相关

  1. 怎么实现一个水平竖直居中窗口? ——position设置成absolute,然后改pading或者margin

  2. margin和pading怎么组成box的?画一下box

  3. 如果有相邻的css元素,margin的设置情况。

    (一窍不通,瞎jb答)我说我用过的就是opacity display和visual

5. 其他

  1. 兴趣是做React的前端开发还是Unity3d相关? ——个人更喜欢Unity,但最近更熟悉react

4.题

  1. 数据结构相关:如何判断一个给定的链表里有没有成环? //不用执行代码,我写了伪代码解释了思路 时空复杂度?

  2. js相关:如何实现一个函数,将复杂的object扁平化。 var object1 = {

    ​ a : true ,

    ​ b : [ 1, [12, 13, 14], {c : true, },],

    ​ c : false, }

    var output = flatten(object1);

    output = {

    ​ 'a' : true,

    ​ 'b[0]' : 1,

    ​ 'b[1][0]' : 12, ​ 'b[1][1]' : 13, ​ 'b[1][2]' : 14,

    ​ 'b[2].c' : true,

    ​ 'c' : false,

    }

//递归,利用instanceof判断是不是基础类型,不是的话把索引拼接然后继续递归,是则把索引加上后插入output

5.反问

我主要问了实习期间的工时要求,还有通勤问题。鹅厂实习时间很灵活,有班车,据说能覆盖黄渡理工。

∞. 后记

zz生日快乐!