小米的面試過程及面試題~
本文以一位童鞋的面試經歷為例,為大家詳細介紹一下小米公司的面試過程和遇到的面試題,供大家參考。
1.自我介紹
這個不用說了,自己介紹一下自己。
2.資料庫My Sql和SQL Server以及Oracle的區別?
他是看了我寫了一篇這樣的部落格才問的,可惜我都忘了自己寫了啥!吃虧了,部落格太久了,都忘記看了。
3.資料庫的左連線和右連線
1)左連線:只要左邊表中有記錄,資料就能檢索出來,而右邊有的記錄必要在左邊表中有的記錄才能被檢索出來
2)右連線:右連線是隻要右邊表中有記錄,資料就能檢索出來
4.資料庫的檢視,為什麼要用檢視?
檢視其實就是select查詢語句 通過關聯查詢或者其他查詢組建起來的,他是多個表的查詢結果集,使用檢視可以提高一個程式的SQL效率,比平常使用select 更加便捷,我們可以直接select * from 檢視VIEW 來獲取,資料庫也更容易維護更新
5.什麼是事務?
事務(Transaction)是訪問並可能更新資料庫中各種資料項的一個程式執行單元(unit)。事務通常由高階資料庫操縱語言或程式語言(如SQL,C++或Java)書寫的使用者程式的執行所引起,並用形如begin transaction和end transaction語句(或函式呼叫)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。
6.資料庫如何獲取表裡最大值?
假如想要取得最大ID的name值(這裡只是借ID為例 不用ordery by)
解決辦法:select max(id) from db_name
7.那獲取第二大的呢?
select top 1 *
from table where 欄位a not in (select top 1 欄位a from table order by id desc)a order by id desc
以上都是資料庫的,資料庫沒發現,基本掛了。當然,還要繼續提問吶。
8.短距離通訊
因為我是物聯網專業的,所以他問了一下物聯網方面的知識。我給他介紹了短距離通訊。
9.如何實現多執行緒伺服器?
這個不好回答,主要是線上程的run方法裡面執行一些輸入輸出流操作。
如何實現多執行緒緩衝池?
通過佇列來實現
10.java的陣列、List、map的區別?
陣列是固定長度的,list不固定,map是基於key-values進行對映的。訪問元素陣列可以通過下標訪問,list需要遍歷,map可以通過Key值獲取map的values。
11.連結串列反轉
1.連結串列內反轉
節點的下一個元素插到節點之前。依次進行,
例如:
連結串列的第二個插到第一個之前,第三個插到第二個之前
2.用棧實現
遍歷連結串列,把每一個節點放到棧裡面,遍歷萬,然後再出棧
12.實現執行緒的方式
1.繼承Thread類。
2.實現Runnable,然後重寫run方法。
兩種方式的區別。
1.一個類只能繼承一個父類,如果已經繼承了Thread,就無法繼承其他的了,所以一般用runnable.
2.使用Runnable可以避免點繼承的侷限,一個類可以繼承多個介面。
擴充套件閱讀