腾讯2019春招一面(电话面试)
?
騰訊2019春招一面
最近有許多事情,導致博客許久沒更,所以先更個一面壓壓驚
?
這件事情的起源有些曲折,所以先做個背景介紹(推銷自己一波)
本人在讀大三學生一名(非985,211),前段時間不少的互聯(lián)網巨頭們開啟了新一輪的春招,本人也去湊了熱鬧。
我當時投簡歷的時候沒注意,直接投了校園招聘,但是我發(fā)現我的簡歷直接就灰掉了,意思就是沒有進入下一輪。
這時我才發(fā)現今年的校招沒開,開的是暑期實習(望大家注意),然后我就沒報希望了。
?
但是事情的發(fā)展出乎了意料,突然前兩天打電話給我要面試,但是在官網上又查不到,這應該就是大家說的不走流程的面試。
?
話不多說,進入面試內容環(huán)節(jié)
面試內容:
- cookie的作用
- cookie安全
- domain跨域
- 實現跨域
- http2
- Tcp連接過程(3次握手,4次揮手)
- DNS解析
- promise
- DOM事件流
- 事件循環(huán)
接下來一點一點來講:
Cookie作用:
首先Cookie是什么?
“Cookie”是小量信息,由網絡服務器發(fā)送出來以存儲在網絡瀏覽器上,從而下次這位獨一無二的訪客又回到該網絡服務器時,可從該瀏覽器讀回此信息。這是很有用的,讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費的時間或用戶首選項(如樣式表)。Cookie 是個存儲在瀏覽器目錄的文本文件,當瀏覽器運行時,存儲在 RAM 中。一旦你從該網站或網絡服務器退出,Cookie 也可存儲在計算機的硬驅上。當訪客結束其瀏覽器對話時,即終止的所有 Cookie
一般來說Cookie在如圖所示的地方
這是百度的一個http請求所設置的Cookie
?
通常來說Cookie保存的數據應該是使用頻繁,但卻不機密的內容
因為Cookie的安全性不太好
為什么呢?因為我們能夠很輕易地獲取Cookie中的內容,甚至連抓包都不用,瀏覽器中就能獲取到
如下所示
由于Cookie和Session都存在跨域問題,自然面試官的第二個問題,就是跨域了
?
跨域
首先是跨域的方法:
下面對這些方法做一個簡單的介紹,具體步驟不過多闡述,希望詳細了解的朋友請自行百度
- 由后端控制,需添加一系列的允許跨域的http頭
- 一般用于Ajax、Fetch等異步請求的跨域
- 需要后端配合,將前端所需的數據傳入回調函數
- 前端在訪問Jsonp的接口時需要傳遞一個回調函數的函數名
- 該回調函數需在發(fā)送請求前就定義完成
- 由于是通過JS傳輸數據實現,所以當后臺返回值的時候就會將值傳入回調函數并執(zhí)行
- 將數據拼接在 url 的 # 部分,也就是 location.hash
- 這種跨域方式需要跨域的兩個域存在父域子域的關系
- 通過設置document.domain來讓兩個域處于同一個域消除跨域
- 這種方式是H5新增
- 通過window.postMessage來發(fā)送數據
- 然后通過 message 事件來監(jiān)聽
- websocket屬于長連接
- 通過websocket可以跨域訪問數據
聊完了跨域,話題自然就落到了造成跨域問題的 http 協(xié)議上
?
HTTP2.0
首先問的問題是,對HTTP2.0有什么了解?
?
這里給出百度百科的答案:
?
多路復用請求; 對請求劃分優(yōu)先級; 壓縮HTTP頭; 服務器推送流(即Server Push技術); 以上四點就是HTTP2.0主要改進的地方 HTTP作為TCP的一部分,TCP的內容當然少不了 但是這一部分網上相關的內容已經很多了,這里就不再描述DNS解析
這里面試官問了 DNS 相關的問題
如果有自己的服務器的小伙伴應該或多或少的有一定的了解。
一般來說服務器是通過IP來訪問的,那么我們希望訪問一個域名(網址)就是訪問某個服務器,必不可少的步驟就是域名解析;
也就是說將網址和IP建立一個映射關系,這一過程就叫做DNS解析
?
至于解析的大致過程如下:
1.現在我有一臺計算機,通過ISP接入了互聯(lián)網,那么ISP就會給我分配一個DNS服務器,這個DNS服務器不是權威服務器,而是相當于一個代理的dns解析服務器,他會幫你迭代權威服務器返回的應答,然后把最終查到IP返回給你。
2.現在的我計算機要向這臺ISPDNS發(fā)起請求查詢www.baidu.com這個域名了,(經網友提醒:這里其實準確來說不是ISPDNS,而應該是用戶自己電腦網絡設置里的DNS,并不一定是ISPDNS。比如也有可能你手工設置了8.8.8.8)
3.ISPDNS拿到請求后,先檢查一下自己的緩存中有沒有這個地址,有的話就直接返回。這個時候拿到的ip地址,會被標記為非權威服務器的應答。
4.如果緩存中沒有的話,ISPDNS會從配置文件里面讀取13個根域名服務器的地址(這些地址是不變的,直接在BIND的配置文件中),
5.然后像其中一臺發(fā)起請求。
6.根服務器拿到這個請求后,知道他是com.這個頂級域名下的,所以就會返回com域中的NS記錄,一般來說是13臺主機名和IP。
7.然后ISPDNS向其中一臺再次發(fā)起請求,com域的服務器發(fā)現你這請求是baidu.com這個域的,我一查發(fā)現了這個域的NS,那我就返回給你,你再去查。
(目前百度有4臺baidu.com的頂級域名服務器)。
8.ISPDNS不厭其煩的再次向baidu.com這個域的權威服務器發(fā)起請求,baidu.com收到之后,查了下有www的這臺主機,就把這個IP返回給你了,
9.然后ISPDNS拿到了之后,將其返回給了客戶端,并且把這個保存在高速緩存中
?
Promise
ES6作為前端發(fā)展的趨勢,當然會被問到
其中著重問的就是 Promise
自從出現異步請求開始,現在的頁面基本上都會有異步的操作
?
那么Promise作為一個標準的解決異步操作的方案,其重要性自然不言而喻。
首先第一個問題是:
?
Promise是怎么實現將異步轉為同步的?
這里說一下我個人的看法,歡迎各位大牛指正。
首先 Promise 并不會將原本異步的操作轉換為同步操作
Promise只是用同步的流程來控制異步操作,從而避免回調地獄
這個過程大致如下:
?
第二個問題:Promise.then 中的 Promise對象和之前新建的 Promise 的關系?
then方法是定義在原型對象Promise.prototype上的
它的作用是為 Promise 實例添加狀態(tài)改變時的回調函數。
then方法的第一個參數是resolved狀態(tài)的回調函數,第二個參數(可選)是rejected狀態(tài)的回調函數。
then方法返回的是一個新的Promise實例(注意,不是原來那個Promise實例)
?
DOM
這里的問題就是比較基礎的常見問題了
首先什么是Dom事件流,由于本人前不久還在更這方面的文章所以答起來也算是得心應手。
這一部分感興趣的朋友可以看我之前的文章,點這里前往
?
然后的問題就是 事件循環(huán)了,這個問題算是一個很重要的問題,因為事件循環(huán)基本上就是JS的運行機制了
由于,JS是單線程的,所以不存在真正意義上的異步操作,只是通過特殊的實現手段來達成異步的效果。
?
?
整個面試過程大概耗時1小時,如果大家有什么問題歡迎留言探討。
此外,本人找實習中,歡迎大牛們以白菜價將我批發(fā)帶走
?
聯(lián)系方式:luohaoyu0920@foxmail.com
?
轉載于:https://www.cnblogs.com/lhyxq/p/10736490.html
總結
以上是生活随笔為你收集整理的腾讯2019春招一面(电话面试)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4大佬讲的虚幻框架
- 下一篇: 远光软件:在电力行业部署区块链,胜算几何