那次面試的那些問題 01

那天我投了鵝廠 (春招實習生)
第二天收到面試邀請,下午17點開始
準備了一天,結果我突擊的知識點 就沒用上三個
然後就可想而知了,第一次面試,咱也沒經驗.導致我已經一個月不敢投簡歷了
面試官挺好的,主要是自己太菜了哎

(英語渣渣)

開始吧!
上傳一份自己的簡歷

開始,先自我介紹一下吧!
吧啦吧啦巴拉

爲什麼想來深圳!
吧啦吧啦吧

平時有什麼興趣愛好!
看書和運動

看什麼書呢?
比如文學類的,名著,專業技能等,最近在看的是 <Java併發編程之美>
(盲猜這個時候面試官在看我的簡歷)
看這本有什麼收穫呢?
比較晦澀難懂,同時也來拓了眼界
能具體來說說嗎?,哪裏晦澀難懂?,你是怎麼弄懂的呢?
(總結可得,當面試官問你的時候你應該答的全面,而且具體,最好舉例子,不要像這次一樣問一點,答一點)
當時緊張的一批,哪還記得這些東西,慌得感覺手都是抖的
吧啦吧啦吧拉巴拉
好的,大概瞭解了,那我們開始正式的聊吧!

1 . 你對c++瞭解多少,來說說你對面向對象的理解?
我認識的c++是大一的時候的入門課程,瞭解的並不深入

  • 面向對象是將現實中很多具體的事物進行抽象化,提取出共有的屬性和行爲進行封裝使用的一種方式,是相對於面向過程而言的

面向過程與面向對象的區別:
來自百度百科
面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。 [2]
可以拿生活中的實例來理解面向過程與面向對象,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始遊戲,2、黑子先走,3、繪製畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用不同的方法來實現。 [2]
如果是面向對象的設計思想來解決問題。面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分爲1、黑白雙方,這兩方的行爲是一模一樣的,2、棋盤系統,負責繪製畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子佈局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。 [2]
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪製棋局,這樣的行爲在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪製版本,因爲通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。

2 . 來說說java中的面向對象的特徵:
(應該在上面回答的時候就帶上外加每個特徵的解釋)
封裝,繼承,多態.

  • 封裝: 是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象調用,對不可信的類或者對象進行信息隱藏。

  • 繼承: java只支持單繼承(可以使用繼承多個接口進行實現),C++才支持多繼承(面試官可能是C++工程師,我答單繼承,他重複問了兩遍)它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。子類擁有父類的所有功能,同時可以擁有自己的特色功能.

  • 多態: 是同一個行爲具有多個不同表現形式或形態的能力。比如龍生九子,各不相同,就是多種形態了,即不同子類實現父類的核心代碼不同,但是形參和名稱必須相同

3 .來說說Hashmap你瞭解多少? ( 貌似面試 必問 開門題 )

  • hashmap是由entry數組+鏈表+紅黑樹 組成的結構,每一個entry中都包含一個k-v的鍵值對,鏈表的作用是用來解決hash衝突的(hash衝突指的是:把當前元素的關鍵字 通過某個函數(這個函數就是hash函數)映射到數組中的某個位置,通過數組下標一次定位就可完成操作,但是當兩個不同的元素通過hash算法萬一的到兩個相同的,地址就產生了hash衝突),當產生hash衝突後則將插入的數據放到對應的數組下的鏈表中,當鏈表的長度超過8的時候就將鏈表轉化爲紅黑樹,利用的是紅黑樹快速增刪改查的特點提高HashMap的性能

4 .HashMap是線程安全的嗎?(後面問,怎麼變成線程安全的?)

  • hashmap不是線程安全的,如果想用線程安全的可以使用
    1.ConcurrentHashMap(抗卡潤特hashmap)使用分段式鎖(不瞭解,不建議說)來實現線程安全,只鎖住需要修改的部分
    2.使用Collections(抗來客醒)類的synchronizedMap(省課賴得Map)方法包裝一下,返回的是map對象了,但是是線程安全的了,
    Map map =Collections.synchronizedMap(new HashMap());

5 .可以說說紅黑樹嗎?有什麼特點?使用場景是什麼?(我就說了四個基本特徵,百度居然是五個 /ll ,其他的問的我就不會了,我感覺問了hashmap 你肯定會帶出紅黑樹,肯定也會問了嘍)

  1. 節點是紅色或黑色。
  2. 根是黑色。
  3. 所有葉子都是黑色(葉子是NIL節點)。
  4. 每個紅色節點必須有兩個黑色的子節點。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點。)
  5. 從任一節點到其每個葉子的所有簡單路徑都包含相同數目的黑色節點(簡稱黑高)。

6 .數據結構會哪幾種?( 我 … )

7 .那你再說說紅黑樹與B+樹的區別?(後面又問爲什麼數據庫要用B+樹)

  • 上鍊接吧紅黑樹與B+樹
  • B+樹是適應文件系統而產生的數據結構,只有葉子節點存儲數據,就像在win打開一個文件一樣的結構所有的父節點都是存儲路徑的作用.
  • B+樹只需要去遍歷葉子節點就可以實現整棵樹的遍歷.而且在數據庫中基於範圍的查詢是非常頻繁的,而B樹不支持這樣的操作

到這基礎問題算是問完了,然而我 答的最多的就是我不會,不知道,忘記了.

可惜可惜我的鵝廠啊,過幾天去投小米和阿里.哎

我感覺他的問題應該是按照什麼標準來問的

盲猜 : 自我介紹 + 基礎知識 + java基礎 + 數據結構 + 算法 + 網絡協議問題 + 簡歷中的項目問題 + 簡歷中提到的瞭解的知識 + 其他學習的東西 + 是否參與XX開源項目 + 瀏覽什麼網頁(幹什麼) + 你還有什麼要問我的嗎? + 下一位 在這裏插入圖片描述在這裏插入圖片描述
休閒娛樂一下:在電腦上QQ聊天使用 /ll 就會出現流淚的表情,有興趣的可以去表情包裏看看相應的快捷鍵的輸入方式是啥!

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