百度 提前批C++ 一面 二面 三面

百度 提前批C++ 一面 二面 三面

【每日一語】當你厭惡你身邊的人,你表達厭惡最好的方式不是和他們爭吵,而是自己勤快點兒,加把勁離開他們。那樣,他們就永遠從你的生活中消失,和死了差不多。

前言:

個人介紹: 985小碩,c++後臺,鵝廠實習生。

按照以往的套路,我都是自我介紹完直接說自己的項目,因為自己的項目已經很熟悉了。就算問到一些不會的也能答出一二三。可一面面試官完全不按照套路。我準備說項目的時候直接打斷了。說我們先問幾個問題,等會再說項目。

虛基類

純虛函數

虛函數

虛函數表內存分佈

虛函數中虛基類和派生類的關係

顯示轉換

問了三個算法題 講講思路

學過網絡和操作系統嗎

三次握手,四次揮手 握手為什麼是兩次

講一講擁塞機制 和流量機制

http https 抓包工具原理

IP地址分為幾類?簡單說一下分類

進程通信有哪些方式

進程同步的方法

知道互斥鎖嗎?

他用什麼來保證共享數據的安全性?

這個我說信號量,他說如果用信號量來解決,現在出現一個狀況,兩段進程都被標記為可以訪問該共享數據,但我們的共享單元只能支撐一個進程訪問。這時候怎麼辦?

我說用唯一標識符去處理。生成唯一標識符,這樣就不會出現這種情況。

他說不對。讓我回去好好看看。

回去查了一下,是原子操作。。

(這個問題問了好久)

數據庫索引 索引原理 以及如何優化數據庫

開始講項目 三個項目,本科的,碩士的,以及在鵝廠的。問鵝廠的問的最細(40 min)

一面總結: 還有很多問題都忘記,面完的感覺就是,百度問的真的很全,第一次電話面超過一個小時的。不夠面試官也沒有在不會的問題繼續難為我,我就說不會。他說沒事就下一個問題了。

為什麼繼承時基類的析構一般聲明為虛函數?

虛函數與純虛函數的區別在於

為什麼構造函數不能夠使虛函數

4.TCP端口掃描方式

5.TIME_WAIT、CLOSE_WAIT

6.守護進程

7.迭代器的++it和it++哪個好

8.開始問項目,從百度二面開始。我的項目就一直被懟,完全吹不動。說幾個核心的點。

9.因為說了tars 的源碼,他就基於這個源碼開始問。如何去處理高併發HTTP請求?

我: 從接入層(統一接入網關,負載均衡)…..從服務層(服務細分,過載保護)…..從存儲層(cache,共享內存,分佈式存儲組件ceph)……

在服務層回答到 過載保護的時候。被打斷。 他說你說的過載保護不過是在請求很多的時候去拒絕掉一部分用戶。或者延時處理。那麼 現在如果出現一個熱點事件,百度的搜索可能會達到數十億次,你去拒絕掉這一部分用戶。那這一部分用戶的用戶體驗怎麼保證?

在存儲層回答ceph 分佈式存儲組件的時候 被問到了映射 為什麼ceph要去做三層映射?

面試官: 你有沒有考慮過流量不乾淨的情況怎麼辦? 用很簡單的ddos攻擊,你這個服務 我1分鐘之內就能讓他趴下。這個你考慮過嗎?

面試官: 你這個底層本質上還是用隊列做的。你有沒有考慮過隊列全滿的情況?就是現在你的所有隊列全部爆滿,你根本沒有辦法去做請求遷移。這時候怎麼處理?

雖然只面了25分鐘,但是大概率知道自己過了。因為最後面試官說:你有什麼問題嗎。我覺得你OK。 我就問了關於他們團隊的一些問題。

二面之後的三天,HR打電話過來約視頻面,並說明視頻面面完之後可能還要加一輪現場面。我說沒問題。 後來又打電話過來,說面試官不同意視頻和電話面。必須現場面。而且不報銷任何路費。從深圳到北京 來回花了3000多。最後拒了。很傷很傷。

從面試開始,我就沒有想過會出現這種情況。

就是自己講完騰訊的實習項目之後。面試官直接說。你這個項目是誰讓你做的。你有沒有質疑過,你這個項目從方案和邏輯上就是錯的?

我 : ………………………….. (從這開始心裡就有一些慌了。)

面試官:我們現在假設一種情況,就是我們的服務端是很安全的,你現在多一個第三方代理,我怎麼信任你這個第三方代理?

我:我們這個服務是對內的。即使對外,我們也可以從請求上來判定。比如相同的IP的地址我們可以從頻率上去限制他的請求。不同的IP地址 我們可以去從key(這個key 是有一個失效期,只能用一次,我們將這些不乾淨的流量儘量攔截在接入層,不讓他進入我們的網關。)

面試官: 你可能理解錯了我的意思,我的意思是,限制服務端去信任客戶端。你憑空多出了一個第三方代理,雖然原則上確實方便了客戶端的使用,但安全性怎麼去保證?

我: 我們可以去做加密。Balabalabalalalalal……………

面試官: 你的意思我懂,但高併發請求如何去處理呢?

我: 從接入層(統一接入網關,負載均衡)…..從服務層(服務細分,過載保護)…..從存儲層(cache,共享內存,分佈式存儲組件ceph)……沒講完就被打斷了。

面試官: 你知不知道,你現在所做的可能都是沒有意義的?

我: ………………………….

面試官:因為你們的服務端,絕對已經做過了這些處理。而且比你的第三方代理做的好。你現在的這個代理服務極其脆弱。你為什麼不把他封裝成一個接口呢?而不是一個服務。

我: …………………………………………

面試官: 你這個項目其實還是有很多有意思的東西,比如你知道為什麼用appid和appsecret 去換取微信那邊的一個access_token權限嗎?

我:我們可以類比,淘寶登陸 除了用戶名和密碼 我們還需要手機驗證碼這樣的方式。

面試官: 你這個類比不對,因為淘寶登陸他現在不信任你這個用戶名和密碼。需要多加一個驗證方式。而通過appid appsecret 他的本質是換取 而不是加

你知道為什麼要換取 ,而不是加嗎?為什麼要這樣做。而不是把appid appsecret 存到數據庫裡面?

我:因為存到數據庫裡面,不夠安全。只要是存在數據庫裡面的密鑰。都可能有被攻破的風險。而access_token是實時生成的。

面試官: 咱們又繞回來了,那你做這個第三方代理的時候為什麼用的是數據庫?你既然知道access_token是實時生成的,那麼就應該知道這個客戶端令牌從原則上是不允許被其他人知道的,更不允許存到數據庫裡面。那咱們換一個問題。還是剛才,那咱們現在假設我們的服務端和數據庫原則上是安全的,那麼現在還是要用access_token去換取?我現在可以直接把appid和appsecret直接串起來串成一個字符串然後md5加密一下。可以這樣做嗎?如果不可以說出理由。

我:到這裡我就懵逼了。。。。。

面試官:好,你現在去做代理服務器。去請求另一個接口。如何去提高他的性能?

我:去做那邊接口的服務細分,每個接口去細分,再在存儲層去做一些優化……………….

面試官:現在假設不允許你動那個接口呢。比如你現在去請求一個其他公司的接口,他就是慢。他那邊代碼寫的就是很不好。你只可以動你的代理層。怎麼處理?

我:多線程,分發,緩存,cdn.

面試官就照著我回答的繼續細問下去。。又懵了。

後來就沒問什麼問題了。問了幾個簡單的就結束了。

總結:

三面面試官,絕對是我面到現在技術最強的一個。雖然掛了,但是面試官人很nice 指出了項目很多我都沒有考慮到的問題。面試全程都在引導我去回答問題。就是不報銷路費太傷了。。。從各大博客和在百度實習的同學瞭解到,百度的技術氛圍真的很贊。秋招再努力了。與大家共勉。

原文:https://www.jianshu.com/p/5355874901bc


分享到:


相關文章: