1. 程式人生 > >小米的面試過程及面試題~

小米的面試過程及面試題~

640?wx_fmt=jpeg

本文以一位童鞋的面試經歷為例,為大家詳細介紹一下小米公司的面試過程和遇到的面試題,供大家參考。

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可以避免點繼承的侷限,一個類可以繼承多個介面。

擴充套件閱讀