腾讯2019春招一面

最近有许多事情,导致博客许久没更,所以先更个一面压压惊

这件事情的起源有些曲折,所以先做个背景介绍(推销自己一波)

本人在读大三学生一名(非985,211),前段时间不少的互联网巨头们开启了新一轮的春招,本人也去凑了热闹。

我当时投简历的时候没注意,直接投了校园招聘,但是我发现我的简历直接就灰掉了,意思就是没有进入下一轮。

这时我才发现今年的校招没开,开的是暑期实习(望大家注意),然后我就没报希望了。

但是事情的发展出乎了意料,突然前两天打电话给我要面试,但是在官网上又查不到,这应该就是大家说的不走流程的面试。

话不多说,进入面试内容环节

面试内容:

  • cookie的作用
  • cookie安全
  • domain跨域
  • 实现跨域
  • http2
  • Tcp连接过程(3次握手,4次挥手)
  • DNS解析
  • promise
  • DOM事件流
  • 事件循环

  

接下来一点一点来讲:

 

Cookie作用:

首先Cookie是什么?

“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie
一般来说Cookie在如图所示的地方

这是百度的一个http请求所设置的Cookie

通常来说Cookie保存的数据应该是使用频繁,但却不机密的内容

因为Cookie的安全性不太好

为什么呢?因为我们能够很轻易地获取Cookie中的内容,甚至连抓包都不用,浏览器中就能获取到

如下所示

由于Cookie和Session都存在跨域问题,自然面试官的第二个问题,就是跨域了

跨域

首先是跨域的方法:

  1. CORS
  2. Jsonp
  3. Hash
  4. Domain
  5. PostMessage H5新增
  6. Websocket

下面对这些方法做一个简单的介绍,具体步骤不过多阐述,希望详细了解的朋友请自行百度

  1. CORS

    • 由后端控制,需添加一系列的允许跨域的http头
    • 一般用于Ajax、Fetch等异步请求的跨域
  2. Jsonp  
    • 需要后端配合,将前端所需的数据传入回调函数
    • 前端在访问Jsonp的接口时需要传递一个回调函数的函数名
    • 该回调函数需在发送请求前就定义完成
    • 由于是通过JS传输数据实现,所以当后台返回值的时候就会将值传入回调函数并执行
  3. Hash
    • 将数据拼接在 url 的 # 部分,也就是 location.hash
  4. Domain
    • 这种跨域方式需要跨域的两个域存在父域子域的关系
    • 通过设置document.domain来让两个域处于同一个域消除跨域
  5. PostMessage
    • 这种方式是H5新增
    • 通过window.postMessage来发送数据
    • 然后通过 message 事件来监听
  6. Websocket
    • websocket属于长连接
    • 通过websocket可以跨域访问数据

聊完了跨域,话题自然就落到了造成跨域问题的 http 协议上

HTTP2.0

首先问的问题是,对HTTP2.0有什么了解?

这里给出百度百科的答案:

多路复用请求;
对请求划分优先级;
压缩HTTP头;
服务器推送流(即Server Push技术);
以上四点就是HTTP2.0主要改进的地方
HTTP作为TCP的一部分,TCP的内容当然少不了
但是这一部分网上相关的内容已经很多了,这里就不再描述

DNS解析

这里面试官问了 DNS 相关的问题

如果有自己的服务器的小伙伴应该或多或少的有一定的了解。

一般来说服务器是通过IP来访问的,那么我们希望访问一个域名(网址)就是访问某个服务器,必不可少的步骤就是域名解析;

也就是说将网址和IP建立一个映射关系,这一过程就叫做DNS解析

至于解析的大致过程如下:

1.现在我有一台计算机,通过ISP接入了互联网,那么ISP就会给我分配一个DNS服务器,这个DNS服务器不是权威服务器,而是相当于一个代理的dns解析服务器,他会帮你迭代权威服务器返回的应答,然后把最终查到IP返回给你。

2.现在的我计算机要向这台ISPDNS发起请求查询www.baidu.com这个域名了,(经网友提醒:这里其实准确来说不是ISPDNS,而应该是用户自己电脑网络设置里的DNS,并不一定是ISPDNS。比如也有可能你手工设置了8.8.8.8)

3.ISPDNS拿到请求后,先检查一下自己的缓存中有没有这个地址,有的话就直接返回。这个时候拿到的ip地址,会被标记为非权威服务器的应答

4.如果缓存中没有的话,ISPDNS会从配置文件里面读取13个根域名服务器的地址(这些地址是不变的,直接在BIND的配置文件中),

5.然后像其中一台发起请求。

6.根服务器拿到这个请求后,知道他是com.这个顶级域名下的,所以就会返回com域中的NS记录,一般来说是13台主机名和IP。

7.然后ISPDNS向其中一台再次发起请求,com域的服务器发现你这请求是baidu.com这个域的,我一查发现了这个域的NS,那我就返回给你,你再去查。

(目前百度有4台baidu.com的顶级域名服务器)。

8.ISPDNS不厌其烦的再次向baidu.com这个域的权威服务器发起请求,baidu.com收到之后,查了下有www的这台主机,就把这个IP返回给你了,

9.然后ISPDNS拿到了之后,将其返回给了客户端,并且把这个保存在高速缓存中

Promise

ES6作为前端发展的趋势,当然会被问到

其中着重问的就是 Promise

自从出现异步请求开始,现在的页面基本上都会有异步的操作

那么Promise作为一个标准的解决异步操作的方案,其重要性自然不言而喻。

首先第一个问题是:

Promise是怎么实现将异步转为同步的?

这里说一下我个人的看法,欢迎各位大牛指正。

首先 Promise 并不会将原本异步的操作转换为同步操作

Promise只是用同步的流程来控制异步操作,从而避免回调地狱

这个过程大致如下:

  1. 创建Promise对象
  2. 立即执行 Promise 中的代码
  3. 当Promise中的 resolve 方法调用时将 结果和 .then 的回调函数放入JS的异步队列
  4. 执行 Promsie 后面的同步代码
  5. 同步代码执行完成后,异步队列将刚才Promise.then的回调函数出队并执行

第二个问题:Promise.then 中的 Promise对象和之前新建的 Promise 的关系?

then方法是定义在原型对象Promise.prototype上的

它的作用是为 Promise 实例添加状态改变时的回调函数。

then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。

then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)

DOM

这里的问题就是比较基础的常见问题了

首先什么是Dom事件流,由于本人前不久还在更这方面的文章所以答起来也算是得心应手。

这一部分感兴趣的朋友可以看我之前的文章,点这里前往

然后的问题就是 事件循环了,这个问题算是一个很重要的问题,因为事件循环基本上就是JS的运行机制了

由于,JS是单线程的,所以不存在真正意义上的异步操作,只是通过特殊的实现手段来达成异步的效果。

  1. JS运行时会维护两个队列,一个是同步队列,一个是异步队列
  2. 顾名思义,同步队列中存放着同步操作,异步队列放着一些异步操作
  3. 代码运行时,JS会首先运行同步队列中的内容
  4. 当同步队列中的内容运行完成后,就会从异步队列中出队一个操作并将其放入同步队列
  5. 由于此时同步队列中只有该异步操作,所以该操作此时会执行(定时器实际上就是过了指定时间后将操作放入异步队列,这也是当异步操作较多时定时器不太准的原因)
  6. 此外当JS中的事件触发时,实际上也就是是将事件的回调操作放入了异步队列(故此这一运行机制称为“事件循环’”)

整个面试过程大概耗时1小时,如果大家有什么问题欢迎留言探讨。

此外,本人找实习中,欢迎大牛们以白菜价将我批发带走

联系方式:luohaoyu0920@foxmail.com

转载于:https://www.cnblogs.com/lhyxq/p/10736490.html

腾讯2019春招一面(电话面试)相关推荐

  1. 双非二本的2019春招Java岗面试心得

    前言 1. 已拿途牛天津研发部Java研发岗Offer2. 追一科技等hr面ing 也许对于大佬来说 这个offer不怎么样 不过对于我这个0offer菜鸟来说已经是来之不易了. 2019.2.20到 ...

  2. 我的2019春招(前端暑期实习)记录

    原文首发于我的博客,欢迎关注~ 今年的春招(暑期实习)批已经过去大半了,相信不少同学已经拿到了心仪的offer了~本来打算暑假有空再写写这段经历,不过今天正好有空就记录一下吧,希望能给正在或者今后要找 ...

  3. 【2019春招】平安科技开发实习生面经

    [2019春招]平安科技开发岗实习生面经 一面 自我介绍 面试题 数据结构 计算机网络 操作系统 数据库 Java 框架 总结 一面 说句玩笑话,这是我人生的第一次面试. 希望本文收集到的面试题能帮助 ...

  4. 2018春招实习笔试面试总结(PHP)

    2018春招实习笔试面试总结(PHP) 博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息, ...

  5. 数据、运营相关试题(一)【牛客网:京东2019春招商务与运营类试卷】

    试题来源:牛客网 试题答案仅供参考.其中前半部分偏向商务类试题,后半部分偏向运营类试题. 数据.运营相关内容,一起好好学习,天天向上吧! 数据.运营相关案例问答题(一)[牛客网:数据分析试题广场] 数 ...

  6. 一名计算机专业渣渣的2019春招求职经历—(成功收割华为、浦发、新华三、宝信软件offer)

    写在前面-- 不经一番彻骨寒,哪得梅花扑鼻香!不管你是谁,不管你是已经20届即将求职的雄鹰?还是19届未能成功入职的弃婴?也或是你是经历了考研失败后才意犹未尽地开始参加春招?都OK,一切都是从零开始, ...

  7. 2019春招前端实习面经

    给 「前端开发博客」 加星标,每天打卡学习 长按二维码即可识别"进入网页"查看哟~ 1.2019春招前端实习面经 从2019.1就开始渐渐的进行复习,2月末开始面试,到现在四月中旬 ...

  8. java后端 春招各公司面试记录(内含字节、阿里等大厂)

    java后端 春招各公司面试记录(内含字节.阿里等大厂) 嘀嗒面试 Meta APP 北大软件 望石智慧 望石二面 望石三面四面 顺丰科技 顺丰二面 顺丰三面 火线安全笔试 火线安全面试 根网笔试 K ...

  9. 腾讯2019秋招笔试真题

    1.小Q爬塔 描述:小Q正在攀登一座宝塔,这座塔很特别,塔总共有n曾层,但是没两层之间的净高却不相同,所以造成了小Q爬过每层的时间也不同.如果某一层的高度为x,那么爬过这一层锁需的还是件也是x.小Q孩 ...

最新文章

  1. Hadoop集群搭建(二:集群主机间免密登录配置)
  2. Knockout应用开发指南 第六章:加载或保存JSON数据
  3. oracle右对齐,Oracle 学习笔记(基础)
  4. Java之JDK、JRE、JVM
  5. 预留创建时检查增强点:nbsp;MB_RE…
  6. shopt_Linux命令
  7. 为什么python 为什么没有接口_python做接口测试的必要性
  8. Python编辑工具的全新版本,PyCharm 2020.1 稳定版发布
  9. LVS——TUN隧道模式(负载均衡)
  10. Flume篇---Flume安装配置与相关使用
  11. SQL 常用语句大全
  12. Quartus17下载程序进FPGA
  13. AcWing 898. 数字三角形(线性DP)
  14. G1垃圾回收器总结一
  15. Switchhosts软件安装包
  16. kali下制作破解密码的字典
  17. 呼叫中心点击拨打接口升级代码
  18. Python 学习资源大全中文版
  19. wpj558刷机教程
  20. 名词性从句引导词的基本用法

热门文章

  1. 【理财】【余额宝】万份收益率等概念介绍
  2. html li圆点单独颜色,如何修改html中列表项li所显示的圆点的颜色?,以及相关样式的设定...
  3. 李宏毅老师课程:Unsupervised Learning - Word Embedding
  4. 科普:Hi-Velocity是系统类别,还是品牌名称?
  5. 先进半导体材料与器件Chapter1
  6. 如何成功-陈安之视频笔记
  7. 什么是准双向口,双向口?
  8. 教你手机变流畅的方法
  9. javascript 的script标签
  10. 如何刻录光盘镜像文件?