面向面经之腾讯前端暑期实习面经(一、二、三面)

针对:腾讯前端暑期实习面经(一、二、三面)

一面

1、看过哪些前端的书籍

2、HTTPS建立通信的过程

图片说明

---------补充http建立通信的过程----------------
一次https通信建立的全过程:

  1. 建立TCP连接
    在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
  2. Web浏览器向Web服务器发送请求命令
    一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。
  3. Web浏览器发送请求头信息
    浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
  4. Web服务器应答
    客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
  5. Web服务器发送应答头信息
    正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
  6. Web服务器向浏览器发送数据
    Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
  7. Web服务器关闭TCP连接
    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
    Connection:keep-alive
    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

3、css有哪些单位

参考:https://www.cnblogs.com/passkey/p/10129985.html

  • em当前字体的大小
  • rem基于根元素进行设置(html)
  • vh显示窗口的高度,vh等于viewport高度的1/100,占满高度即为100vh
  • vw显示窗口的宽度
  • vmin与这个宽度和高度的最大值或者最小值有关
  • vmax
    如果浏览器设置为1100px宽、700px高,1vmin会是7px,1vmax为11px。然而,如果宽度设置为800px,高度设置为1080px,1vmin将会等于8px而1vmax将会是10.8px。
    图片说明

4、讲一下css的flex布局

参考:https://www.cnblogs.com/10yearsmanong/p/12212825.html
弹性布局,用来为盒状模型提供最大的灵活度
任何一个容器都可以指定为flex布局,容器分为两种,块flex和行内flex

5、js的原型和原型链,原型链的终点在哪里?

所有的JS对象都有一个prototype属性,指向它的原型对象。当试图访问一个对象的属性时,如果没有在该对象上找到,它还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

原型链的终点是null
Object.prototype.proto === null
https://zhuanlan.zhihu.com/p/94596126
图片说明
重点(十分详细):https://www.jianshu.com/p/652991a67186

6、es5、es6继承

// es6的继承主要是class的继承

// 通过class关键字定义类
// 类的所有与方法都定义在类的prototype属性上面
class Point{
    // 构造方法
    constructor(x,y){
        // this是实例对象
        this.x=x;
        this.y=y;
    }
    // 相当于定义在类的prototype属性上
    toString(){
        return '('+this.x+','+this.y+')';
    }
}
// 添加新方法
Object.assign(Point.prototype,{
    toString1(){

    },
    toValue(){

    }
})

var b=new Point(1,2);
// 在类的实例上调用方法,相当于调用原型上的方法
console.log(b.toString());

7、讲一下js的事件委托

ok

8、什么是闭包?闭包有哪些使用场景?

9、浏览器的缓存机制

浏览器第一次访问一个地址时会缓存静态文件(html,css,js),然后当第二次访问时会查看缓存是否过期,如果没有过期不会重新下载网页,直接使用缓存中的网页。只有网站明确标明已经更新了,浏览器才会重新下载网页。

强缓存
协商缓存
###10、浏览器的渲染原理

11、回流和重绘

ok

12、跨域问题以及解决方案

ok

13、XSS和CSRF,解决方案

ok

14、vue数据双向绑定的原理,数组中的元素更新是怎么实现的呢?

15、关于node

16、手写代码题:找出字符串中出现次数最多的字符及出现次数

17、有什么要问我的吗(问了一下前端的发展问题)

二面

尽可能详细的说明从输入url到回车这个过程中发生了什么
如果要加载一个很大的图怎么办,后来get到面试官想问的其实是前端要加载一个图片有哪些方式,然后还问到了base64是怎么实现的,有什么缺点,icon是怎么实现的
px和rem的区别,举个例子说明一下
js事件委托
说一下原生Ajax,因为说到了状态码304,然后又问了浏览器的缓存机制
讲一下你知道的前端性能优化方式
用vue和react哪个多一点(vue)。说一下vue数据双向绑定的原理
先出了一个深拷贝的题,问会输出什么,然后手写一个深拷贝
从一个数组的后十个数中找出3个和为10的数字,说一下解决方案。刚开始说了个三层循环的,然后让优化一下,利用对象优化到了两层
有什么要问我的吗(问了一下前端之间分工协作的问题)

三面

后端一下子给你几万条数据,你要怎么处理。一开始我说,这种情况下后端一定会分页的,然后又问没分页怎么办。然后我说前端手动分页,然后讲了一下具体的实现方法。

有一个高频触发的请求,你会怎么处理,这个饶了好久,一开始没get到面试官的点,一开始谈到了节流和防抖,然后面试官说这样会影响用户体验,而且这个需求就是需要高频触发,然后又说了一下需要高频请求的场景,一开始说到表单,然后说到购物车抢购。然后我又说加个16位随机字符串的参数,然后面试官说这样只是可以区分请求,在网络传输过程中,请求不一定是按先后顺序到达服务器的,那么服务器怎么知道请求的先后顺序呢,其实答案很简单,就是加个时间戳参数。不过当时一下子没反应过来,还谈到了域名发散,面试官说太复杂,然后才谈到加表明各个请求之间关系的参数。

你有什么想问我的吗(问了一下腾讯招实习生的时候最看重的是实习生的哪些能力)

最后就聊了一下实习时间还有为什么学前端,我大概说了一下,然后面试官说女生喜欢做好看的东西。我觉得总结的很对哈哈。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务