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

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整数存储范围的大整数相加,参数和返回值都是字符串类型的。

阿里巴巴

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

  • 情景分析

好比说你从后端拿到了一个对象,它的嵌套层级很深(可能要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中几个属性的解释
  • 双向绑定的原理
  • 前端性能优化可以从哪些方面入手

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

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

第二轮

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

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

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

总结

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

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

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

转载于:https://juejin.im/post/5cb13a766fb9a068b0375840

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值