標籤:
目前經曆了小米的三輪面試,都是技術面試。
每次的面試形式都是先進行電話溝通,問一些項目相關的東西,還有基礎知識,然後再線上寫代碼。三面,我一共做了6道編程題。
下面統一做下整理:
一面:
(1)電話溝通:
1.主要是圍繞著簡曆上自己寫的項目來提問。感覺小米麵試官水平比較高,因為不像hujiang的java面試官一樣,問一個學電腦的什麼是遞迴。
2.給你兩張表,變換各種情境,寫不同的sql。主要是考察各種關鍵字的使用,distinct,group,order by,offset
3.用shell命令對一個檔案進行各種處理
4.http協議狀態代碼的考察
5.關於介面的並發訪問,多線程等問題
(2)線上編程:
1.寫一個簡單的單例模式代碼
2.接觸過哪些設計模式?
3.鏈表a->b->c->d 反轉成a<-b<-c<-d 。反轉鏈表,定義一個函數,輸入一個鏈表的頭結點,反轉該鏈表並輸出反轉後鏈表的頭結點,鏈表定義如下:
struct ListNode{int pKey;ListNode* pNext;};
4.判斷一個數組是否是二叉排序樹的後續遍曆,寫一個方法,輸入值為一個整數數組,輸出為True 或False。(暫且假設輸入的整數數組裡任意兩個整數都互不相同)這道題目可以用Java來寫嗎?有什麼思路可以寫一下
二面:
(1)電話溝通:
1.依然是先聊一下簡曆上項目的問題;
2.多態
3.輸入url後面發生了什麼
(2)線上編程:
1. 有這麼一種鏈表,它的每個結點除了包含指向下一個節點的指標,還包含一個指向該連結中任意一個節點的指標。現需要實現此類鏈表的複製演算法。
請完成clone的代碼實現(C++或Java或其他語言),盡量少使用輔助空間。
C++:
struct Node { Node* next; Node* random_node; } Node* clone(Node* head) {…}
Java:class Node { Node next; Node random_node; }Node clone(Node head) {…}
2. 使用shell從一個記錄檔中找出出現頻率最高的前十個關鍵詞以及次數。如記錄檔每行為 2015-09-10
3.面板:
1 2 3
4 5 6
7 8 9
0 <-
顯示屏:
123
一百二十三
當面板中按順序點擊1,2,3時,顯示屏對應顯示兩行,123和一百二十三,<-是回退鍵,如此時點擊回退鍵,則顯示屏顯示12和十二。
寫個程式實現這個功能,面板點擊可以認為是標準輸入,顯示屏輸出可以認為是標準輸出。
三面:
(1)電話溝通:
1.覺得前面兩輪面試怎麼樣?
2.覺得你做得最有底氣的項目是什嗎?介紹一下
3.根據上面說的,面試官說了一種類似的情境,怎麼進行處理
4.給出一種檢測記憶體泄露的方案
5.一個搜尋引擎,目前有兩種搜尋演算法,給出一個方案,量化評估兩種演算法的優劣。
1》評估標準需要自己想辦法量化;
2》怎麼準備資料;
3》具體的實施方案……
(2)線上編程:
代碼的注釋有/* */ 和 // 兩種,給你一段代碼,把代碼中的注釋去掉之後,輸出去掉注釋後的代碼
小米麵試題目(測試開發崗位——不是測試,是測試載入器和平台的開發崗位)