金山wps c++開發一面總結

  最近新冠肺炎疫情逐步減緩,廣州也迎來好消息,0新增,0疑似。但是還是得宅在家裏,週末閒着無聊,順便更新了一下簡歷,意外收到了金山wps的面試邀請,預約了電話面試的時間,今天下午剛剛結束一面,今晚總結一下下午的面試情況。

  電話面試途中還因爲信號問題中斷了一次,還好我後面馬上打回去了,不然就白白浪費了一次機會。開始先是自我介紹,巴拉巴拉幾分鐘後,進入正題。

問題1:聽說你對網絡編程比較熟悉,說一下tcp黏包怎麼產生,又是怎麼解決吧。

第一個問題直接懵逼,因爲之前看過理論,但是自己之前做的相關的項目沒有遇到這個問題,加上沒有複習到。我只能回答不會,哈哈哈,場面頓時有點尷尬。

查了一下網上的回答:

產生原因:TCP粘包就是指發送方發送的若干包數據到達接收方時粘成了一包,從接收緩衝區來看,後一包數據的頭緊接着前一包數據的尾。

解決方法一:可以每次發送同樣大小的包,,過小的包,後面部分用固定的字符'\0'進行填充

解決方法二:每個包都給有固定的格式,比如開始符,結束符

問題2:那你說說如何快速找到單鏈表的中間結點吧。

回答:冥思苦想了20秒鐘,這個好像也不會,心裏想完了。後面想到思路回答說,定義兩個指針A,B,因爲單鏈表最後的結點指針域指向空,用A指針每次遍歷兩個結點,B指針每次遍歷1個結點,當A指針指向空時,B指針所指向的就是中間結點。因爲比較緊張,把A遍歷2次說成了3次。。

問題3:說一下網絡擁塞是怎麼造成的

回答:這個也不會,但是隻能硬着頭皮答,因爲接收端的緩衝區不夠大,當接收端還沒處理完,發送端卻在一直髮送數據過來,語無倫次,直接被面試官打斷。。

百度答案:網絡擁塞(network congestion)是指在分組交換網絡中傳送分組的數目太多時,由於存儲轉發節點的資源有限而造成網絡傳輸性能下降的情況。

問題4:tcp如何保證可靠的服務

回答:這個也不會,只能藉着一點點印象回答,比如超時重傳,對無序的包進行排序,確認響應等

後面回答說做過udp發送數據,在每一個字節流面前加上標識符,然後接收端通過判斷標識符,來確保傳輸的順序,如果發生錯誤,會發送信息給發送端,要求重新發送。答得很水,對tcp這一塊很久沒複習了,雖然之前看過。這裏得到感悟,千萬不能打無準備的仗啊。

問題5:說一下c++字節對齊的作用

可能因爲覺得我網絡編程太水了,沒有再問網絡的知識,哈哈哈。回答:結構體中遇到字節對齊的問題,作用主要是爲了數據存取的效率可以提高。

問題6:說一下動態鏈接庫和靜態鏈接庫的區別

回答:動態鏈接所調用的函數代碼並沒有被拷貝到應用程序的可執行文件中去,只是在其中加入了所調用函數的描述信息,程序在運行時纔會調用動態庫存放的接口代碼。靜態庫則反之。

問題7:父類析構函數爲什麼要加virtual

回答:要想通過父類的指針釋放通過子類對象,必須將父類的析構函數設置爲virtual。

問題8:c++11用過麼

回答:用過auto,for循環,<thread>等

問題9:共享指針實現原理

回答:採用引用計數器的方法,允許多個智能指針指向同一個對象,每當多一個指針指向該對象時,指向該對象的所有智能指針內部的引用計數加1,每當減少一個智能指針指向對象時,引用計數會減1,當計數爲0的時候會自動的釋放動態分配的資源。 

問題10:c++ static_cast和const_cast的區別,用過麼,有什麼作用

這個最基礎的,因爲很久沒用了,我沒答上來,尷尬。回答:用過,但是具體作用忘了。

記錄一下作用:static_cast主要用於C++中內置的基本數據類型之間的轉換,但是沒有運行時類型的檢測來保證轉換的安全性。

const_cast可以使一個本來不是const類型的數據轉換成const類型的,或者把const屬性去掉。 

問題11:10萬個數據找到最大的100個數怎麼實現?

回答:我會採用快速排序算法進行排序,再拿到最大的100個數。還有更好的辦法麼?一時之間想不起來了。

問題12:平時喜歡看什麼技術書籍麼

回答:stl源碼,喜歡玩玩腳本語言,侯捷相關的c++書籍。

問題13:你對自己有什麼期待

回答:我渴望成爲技術leader, 踏實進步。

一面到此結束,自我感覺回答的很差,也很水。

體會:網絡編程的相關概念還是很重要,需要多多複習,多多實踐。雖然一直在忙公司的業務,但是c++基礎和網絡編程要多複習,多實踐。

 

末尾:晚上收到了hr的回覆,說自己通過了一面,下週二面,很意外,因爲之前覺得自己答得比較差,以爲沒有機會了,加油吧,繼續衝刺。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章