1. 程式人生 > >面試北京高思教育java開發考點總結---遠端面試

面試北京高思教育java開發考點總結---遠端面試

北京高思教育是在11月底才開始招人的,一般來說好的企業都已經招滿了人了,但是估計是做教育的,所以不怎麼需要it人才吧!還有一點就是說只發實習offer,實習兩個月之後再根據實際情況來考慮要不要留你。我也只是聽說給的薪資待遇還不錯,所以就去面試了,面試官是一個男生,感覺30歲左右,不要問我怎麼知道的,然後全程都不想說話,估計因為週末所以不想工作,還有就是遠端面試網路不是很好,有些時候交流不是很方便。然後下面說一下面試的主要內容。
1.java中繼承與介面的區別?請說明他們相對而言的優缺點?
10:03:03
高思教育面試官 2017/11/25 10:03:03
參考回答:實際概念區別:
區別1:
不同的修飾符修飾(interface),(extends)
區別2:
在面向物件程式設計中可以有多繼承!但是隻支援介面的多繼承,不支援’繼承’的多繼承哦
而繼承在java中具有單根性,子類只能繼承一個父類
區別3:
在介面中只能定義全域性常量,和抽象方法
而在繼承中可以定義屬性方法,變數,常量等…
區別4:
某個介面被類實現時,在類中一定要實現介面中的抽象方法
而繼承想呼叫那個方法就呼叫那個方法,毫無壓力
2.LinkedList與ArrayList的區別,比較二者插入、刪除、查詢的時間複雜度?
10:07:37
高思教育面試官 2017/11/25 10:07:37
參考回答:ArrayList和LinkedList在效能上各有優缺點,都有各自所適用的地方,總的說來可以描述如下:
1.對ArrayList和LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對ArrayList而言,主要是在內部陣列中增加一項,指向所新增的元素,偶爾可能會導致對陣列重新進行分配;而對LinkedList而言,這個開銷是統一的,分配一個內部Entry物件。

2.在ArrayList的中間插入或刪除一個元素意味著這個列表中剩餘的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。

3.LinkedList不支援高效的隨機元素訪問。

4.ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間

可以這樣說:當操作是在一列資料的後面新增資料而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的效能;當你的操作是在一列資料的前面或中間新增或刪除資料,並且按照順序訪問其中的元素時,就應該使用LinkedList了。

tips:

ArrayList 是線性表(陣列)
get() 直接讀取第幾個下標,複雜度 O(1)
add(E) 新增元素,直接在後面新增,複雜度O(1)
add(index, E) 新增元素,在第幾個元素後面插入,後面的元素需要向後移動,複雜度O(n)
remove()刪除元素,後面的元素需要逐個移動,複雜度O(n)

LinkedList 是連結串列的操作
get() 獲取第幾個元素,依次遍歷,複雜度O(n)
add(E) 新增到末尾,複雜度O(1)
add(index, E) 新增第幾個元素後,需要先查詢到第幾個元素,直接指標指向操作,複雜度O(n)
remove()刪除元素,直接指標指向操作,複雜度O(1)

3.left join,right join,join三個的區別?應用場景舉例。
使用時需要注意的地方?
10:10:39
高思教育面試官 2017/11/25 10:10:39
參考回答:join等價於inner join內連線,是返回兩個表中都有的符合條件的行。

left join左連線,是返回左表中所有的行及右表中符合條件的行。

right join右連線,是返回右表中所有的行及左表中符合條件的行。

full join全連線,是返回左表中所有的行及右表中所有的行,並按條件連線。

通常情況下,left join肯定比inner join返回的行數多。
4.如何優化一個慢查詢?(可附加一個實際例子)
影響查詢效率的原因?
10:13:58
高思教育面試官 2017/11/25 10:13:58
參考回答:首先對於慢查詢我們需要找到原因,第一步肯定是通過命令檢視慢查詢日誌,然後找出查詢緩慢的原因。下面肯定是對資料庫的優化:
1.大表劃分成小表
2.使用水平劃分和垂直劃分來實現高效率
3.提高硬體的配置
4.優化查詢SQL語句,如少使用* 、 in 、小表 join 大表
5.優化索引,建立有效的索引
6.資料庫系統檔案的優化,將資料檔案索引檔案、日誌檔案放在不同的磁碟,提高執行的並行度
5.請用自己的理解和經驗敘述java的多執行緒,並舉例
參考回答:使用什麼是多執行緒。多執行緒是為了提高資源的利用率、解決併發問題、加快程式的執行而引入的。首先多執行緒實現有四種方式 1.繼承Thread 類 2.實現Runnable介面 3.實現callabel介面,通過FutureTask包裝器來建立Thread來建立執行緒 4.通過ExecuteService、callable、Future實現又返回結果的執行緒 舉例就是購票 彩票