面经:2018暑期实习腾讯一面(前端)

时间:2018年4月11日上午9点

地点:广州市天河区圣丰索菲特大酒店

面试官:感觉比我大不了几岁的小伙子,很有眼缘,人还不错

问题深度:★ ★ ★

问题广度:★ ★ ★ ★

面试官友好程度:★ ★ ★ ★

综合难度:★ ★ ★


一、自我介绍

没啥好说的

二、 项目(根据项目进行提问)

1. 最近的一个项目,使用的技术栈,你在项目中担任的角色?

老人院管理系统,Vue + ElementUI + Stylue,技术选型 + 组件树设计 + 部分代码开发。

追问:为什么选择Vue?

轻量、组件化、易上手

2. Vue 组件通信是怎么实现的?

父子间通信通过props 和 $emit 传值,同级组件使用Vuex 进行通信。

追问:说一下Vuex 吧?

Vuex 主要包含几个概念:State、Getter、Mutations、Action、Module。分别用来维持全局变量、获取变量、设置变量、模块化操作。

3. Angular 的依赖注入你有了解过吗?是什么意思?有哪些场景的应用?

依赖注入我举了个去菜市场买菜和小贩送菜上门的例子,应用场景没说上来。

三、理论和解决方案

1. HTTP 和 HTTPS 的区别是什么?为什么HTTPS 更加安全?

HTTPS 相当于HTTP + SSL,HTTP 是不安全的因为它在传输的过程中使用明文传输,而HTTPS 是通过密文进行传输的。HTTPS 在传输之前会使用非对称加密算法获得对称密钥,然后使用对称密钥加密传输内容。

追问:HTTPS 需要加密是否会造成性能上的问题?如何提高?

这个没回答上来,说应该可以使用类似缓存的机制吧。

补充:HTTPS 性能优化

2. 跨域问题有了解过吗?怎么解决?

两种办法:JSONP 和 CORS。JSONP 利用了src 的无跨域限制,浏览器端可以访问服务器端写有传输内容的js 文件,然后执行回调方法,进行处理。CORS 通过在请求头中添加origin 来标明自己的身份,再在服务器端允许相应的origin访问。CORS 分为两种情况:简单请求和非简单请求。

3. 前端的请求信息都包含哪些字段?(直接看图)


4. 网页加载的全过程?

HTML 框架搭建 -> Css 渲染 -> js 引发重绘或重排

追问:在发请求之前可能会有哪些操作?

检查缓存吧

追问:缓存机制,请求头中有哪些相关的字段?

emmm,只记得有个过期时间

补充:cache-control 相关知识点

5. 原型链了解吗?讲一下

js 中所有的对象都有一个共同的祖先,叫Object.prototype,在创建对象的时候是类似继承关系的一层一层地传递,就像一条链子。当我们访问一个对象中的属性或者方法的时候,会先去找这个对象本身是否有,如果没有再去找它的父亲,直到原型链的根节点。

6. 面向对象了解吗?不局限于js 中,抽象类、接口、巴拉巴拉

emmm,母鸡

7. 设计模式知道不,说说单例模式和工厂模式?

工厂模式用来批量成产对象。单例模式不知道。我还知道一个观察者模式,有点类似Vue 的数据双向绑定机制,一个人在一旁盯着两个人,任何一方有风吹草动他都会通知给另一方。

8. HTTP 状态码了解吗?(问的很浅,没有问具体某个是什么意思)

2 开头的表示成功,3 开头的表示重定向,4 开头的表示客户端bug,5 开头的表示服务端bug。

9. 同步、异步、阻塞、非阻塞了解吗?说一下吧,能不能给我举个栗子

我说假如我想找人办事,但是那人在吃饭,他吃饭需要30分钟。这个时候我有两个选择,一个是在旁边等他吃完饭然后给我办事,另一个是先去做自己的事情,等他吃好了再来找他。这两种方式分别对应了同步和异步。

10. defer 了解吗?

js 加载的时候三种情况,同步,asyc(获取和执行都是异步),defer(获取是异步,执行是同步)

11. 有哪些实现异步的方式?

回调、Promise、SetTimeOut

追问:再想想还有其他的吗?

呃.......想不到了

补充:可以利用script 的异步属性

12. JS 垃圾回收机制了解吗?

只记得一种机制是引用计数,当变量引用计数为0的时候就回收内存。

补充:标记清除和引用计数

四、后端

1. 使用什么数据库?

MYSQL

追问:性能优化、索引、数据库引擎有了解过吗?

没有

2. Apache、Nginx、Node 有用过吗?

追问:Apache 和Nginx 的区别是什么?

Apache 是服务器端程序,Nginx 是反向代理。

追问:他们是单线程还是多线程?

Node 是单线程,其他两个是多线程。

追问:反向代理是什么意思?跟正向代理有什么区别?

正向代理代理客户端,服务器不知道客户端是谁。反向代理代理服务器,客户端不知道服务器是谁。然后举了个借钱的例子。这个时候我觉得举个要offer 的例子可能更应景,哈哈哈。

五、其他

1. 这个网站(简历上放了个人网站的链接)是你自己搭的吗?放在哪里?有没有用到什么组件?

对,放在阿里云(相视一笑,气氛有点诡异)上的,没用到什么框架和组件,就是一个简单的h5 页面。

2. 来,做道题吧,给你20分钟时间,用你最擅长的语言,手撸代码。然后就跑到旁边的床上敲键盘去了。

题目内容:小明有20块钱,一瓶汽水一块钱,两个空瓶子能换一块钱,问小明最后能喝到多少瓶汽水?

用js 写的,for 循环实现,给他讲解了一下我的思路。然后问我怎么不用递归,如果用递归该怎么解决?我说递归就学树的时候  接触的比较多,平时用的不多。他说,好,没事,这个不做要求。

递归解法:

function getNum (num) {
  let sum = 0;
  sum += Math.floor(num / 2);
  if (num >= 2) {
    return sum + getNum(sum + num % 2);
  } else {
    return 0;
  }
}

console.log(20 + getNum(20));

六、你有什么想问的吗?(以下是我问)

1. 今天一共有几场面试?面完这个后面还有吗?

今天就一场,面完就可以走了。

2. 因为我个人在学习前端过程中走的路还是蛮曲折的,所以想问问腾讯内部针对新人的培训机制如何?

巴拉巴拉,讲了一堆,什么技术分享,内部wiki,也会有一些课程之类的。

3. 您觉得我今天的表现如何?(感觉这是个很重要的问题,即可以知道你自己的情况,又给面试官一个给自己提供建议的机会,所以问的时候最好加一句,您对我有什么建议呢)

很ok啊


(暂时这么多,有想到其他的随时补充~~)

猜你喜欢

转载自blog.csdn.net/qq_33594380/article/details/79894698