前端实习面经:头条、腾讯、阿里、拼多多、搜狐(一)

emm,过去这一个月面试了几家公司,先后拿到了搜狐和头条的offer,因为等待面试和等待面试结果这个过程实在太痛苦了,所以拿到头条的offer之后就没有再面试了。

腾讯

腾讯是最早投递和面试的一家公司,先后面试了两次(也挂了两次)。

腾讯视频-视频一面

  • 算法题
    给一个数字,隔三位加一个逗号之后以字符串形式输出(eg:2333333 -> 2,333,333)

  • VUE
    说说Vue的双向绑定和VDOM
    为什么VDOM会提升性能?

网络

  • 跨域
    说说同源政策
    有什么方法能绕过同源政策/跨域通信(CROS、图像ping、jsonp、webSockets)

  • HTTP-状态码
    以1-5开头的分别是什么意思。
    与重定向相关的几个(301,302,303,307);
    与浏览器缓存相关的(304).

  • 浏览器缓存
    强制缓存和协商缓存的过程; (先强制,后协商)
    服务器再验证可以使用哪些方法,使用什么首部(ETag配合if-none-match、last-modified配合if-modified-since)。

  • TCP
    三次握手四次挥手

  • DNS
    查询的过程
    递归查询和迭代查询知道么

  • CDN
    作用,原理,请求资源的过程,为什么能更快的拿到资源(重点)

JS语言基础

  • 闭包
    概念(一个能够访问别的函数的作用域的函数)
    用处(函数节流,柯里化,创建私有变量)
    缺点(重点:内存泄漏)

  • 作用域
    三种作用域(全局,局部,块级),
    提升(var,函数声明),
    暂时性死区(let & const)

  • 原型链
    读写属性时分别怎么按照原型链查询(读变量则查找,写变量则直接在对象上写)

  • 程序段输出结果

let obj = {};
Object.setPrototypeOf(obj,{a:233});
obj.a++;
console.log(obj.a); // 输出什么?
  • 作用域链
    按照作用域链查找的过程,
    this

  • 设计模式
    “JS设计模式有了解么?”(没了解过,不过大概知道事件模型是观察者模式的一种实现)

总的来说相当充实的一次面试,基本覆盖了之后几家公司面试中遇到的考点。

腾讯另一个部门--电话一面

问的大部分问题都忘掉了,不过最后加了QQ共享了桌面让我做两道题然后把源文件发给他。

  • 实现一个动画。将一个div进行移动,速度先快后慢,duration为5秒
  • 实现一个函数,将两个超过JS整数存储范围的大整数相加,参数和返回值都是字符串类型的。

阿里巴巴

使用了内推资格,直接进入面试(不过一次就挂了)

  • 你在学校里哪门课学的最好呀?(面向对象编程)
    那这门课主要说的是什么呢?(将软件分割为一个个对象和对象之间的通信和交互)
    了解多态么(指的是对属于不同类对象调用同一个方法,实际执行不同的操作/函数)

  • 情景分析一
    请你编写一个模块,当别人在他们的代码中引入这个模块之后可以实现这样的效果:

    在一个对象中可以编写这样的多个函数:他们具有不同长度的参数列表,但是当调用这个函数时,可以以相同的函数名调用。

之后向一位学长请教了一下,一个方案是使用ES7中的decorator(装饰器)

  • 情景分析二

好比说你从后端拿到了一个对象,它的嵌套层级很深(可能要a.b.c.d.e.f.g)这样引用。但是传输过程中对象可能会损坏,可能a.b的属性c不见了(变成undefined了)。但如果还是像上面这样引用,就会变成向undefined请求属性,从而报错。

请你设计一种获取这个对象的属性的方式,保证以下几点:  
- 不能报错
- 但是需要知道引用链从哪里断开的(上例就是a.b.c)
- 如果引用链断开了,从而没有拿到真实的值,请给出一个默认值  

和同学讨论了一下,有以下几种方式:

1. 在try块中访问对象.
如果出错了,catch(err)中的err会包含出错信息,可以知道引用链在哪里断开的

2. 使用一个函数进行访问,并且函数的参数是引用链的字符串形式(即"a.b.c.d.e.f.g")  
函数内部对字符串进行分割,然后由表至里依次遍历访问。并且,每次都确定一个对象(a.b)没有丢失才继续访问它的属性(a.b.c)
  • post和get的区别(语法上来说区别不大。但是语义上来说有比较大的区别:安全性,幂等性等。请在知乎上自行搜索)
  • 常用的状态码
  • 浏览器缓存
  • 闭包,作用域链,原型链

搜狐

第一家拿到offer的公司。当时它晚上来我们学校做宣讲,下午就顺便面试了一批人。一共两轮,如果通过第一轮会在走廊里等一段时间进行第二轮。

第一轮

先做几道题吧(15min):

  • 两个人分别掷硬币,谁先掷出正面谁就赢,直到一个人胜出才结束。分别计算先手和后手的胜率。
  • package.json中几个属性的解释
  • 双向绑定的原理
  • 前端性能优化可以从哪些方面入手(CDN,使用缓存,合理使用script标签的defer和async,减少重排和重绘)

然后问问题,就记住一个:

  • 手写前端和后端代码来实现jsonp

第二轮

一个很和蔼的大哥给我出了一道算法题:
写一个函数,判断一个数是不是自除数
自除数的定义:如果一个十进制数能够被它的每一个数位上的数字整除的话,他就是自除数。

首先和面试官说了我的两种思路,然后选择了其中一种开始写代码。

然后就说回去等通知吧,如果通过了三天之内会给回复。然后第三天就收到了电话。

总结

腾讯和阿里不愧是资深大厂,面试相当有难度和广度。

最后针对一些知识点推荐对应的书籍:

  • 浏览器缓存 -- HTTP权威指南对应章节
  • DNS,CDN -- 计算机网络,自顶向下方法对应章节
  • 同源政策,跨域方法 -- JS高级编程对应章节、阮老师的文章
  • JS设计模式 -- JavaScript设计模式与开发实践

头条的和拼多多的下次更新。

#实习##面经##春招##腾讯##阿里巴巴##搜狐##前端工程师#
全部评论
阿里的情景分析题,应该是要回答使用proxy设计吧
1 回复
分享
发布于 2019-04-14 00:31
或者是 lodash 的 gets 方法
1 回复
分享
发布于 2019-04-14 00:32
阅文集团
校招火热招聘中
官网直投
啥时候更新头条和拼多多啊😋
点赞 回复
分享
发布于 2019-04-16 15:48

相关推荐

10 65 评论
分享
牛客网
牛客企业服务