1. 程式人生 > >記京東Java開發實習生一面

記京東Java開發實習生一面

2017/4/15
這次面試還是比較有紀念意義的,是我步入職場的第一次面試,面試過程大概30分鐘,在這次面試中確實發現了自己好多的不足,所以做一次小總結。

面試前

原本通知我要在下午3點面試,然後我提前一個小時到的,掃完碼簽到後,便坐在椅子上等候,期間還碰上了我們吉大的同學。剛坐了時間不長,就來了簡訊,讓我去找某號面試官面試。
今天我聽說騰訊也是這樣,基本到了面試處,簽完到很快就面試,不按事先約定時間。所以簽到後不要亂走。

面試過程

1.自我介紹

我準備了一段比較詼諧幽默的自我介紹,去之前聽同學說他的面試官人很好,喜歡開玩笑,我便竊喜,覺得這樣的自我介紹會有一個很好的開場。但是等我到了,我發現並不是所有的面試官都像這位同學的面試官那樣幽默,我的這位面試官人也很好,但是比較成熟沉穩,而且在盯著電腦做什麼,我頓時覺得我那幽默的自我介紹不合適了,便臨時做了刪改,所以也造成了中間有一點頓。
所以我特別建議,自我介紹一定要能適合所有性格的面試官,適合所有的場景,在自我介紹中能突出自己要表現的內容即可,不用刻意的製造幽默,否則效果可能適得其反。

2.技術問題

1.切記要謙虛
面試官在看簡歷時,看到了JavaScript,便問這門技術掌握的怎麼樣。我說還可以吧,用這門技術做過一些專案,沒想到面試官上來就問:“那你說一下Js的閉包吧”,我突然就懵逼了,完全沒聽過啊,我記得當時我很誠實的說了:”不好意思,這個我真沒聽過,因為平時做的東西有點偏應用了,對這個概念真的不瞭解。”
2.集合
Map,Set,List以及實現了這幾個介面的類的底層結構。
解析:
Map底層結構是平衡二叉樹(如紅黑樹);HashMap底層結構是陣列加連結串列,實際上是“連結串列雜湊。
Set底層結構是紅黑樹;HashSet底層資料結構是散列表。
List底層結構是陣列;ArrayList和Vector底層結構是陣列;LinkList底層結構是連結串列。
3.資料庫索引,一定要詳細掌握,包括原理、作用,乃至在索引過多時能造成什麼。
解析:
索引問題就是一個查詢問題。
(0)索引起源:大多數時候,我們不知道某一條記錄在第幾個位置,只知道主鍵(primary key)的值。這時為了讀取資料,可以一條條比對記錄。但是這樣做效率太低。
(1)索引介紹:資料庫索引,是資料庫管理系統中一個排序的資料結構,這些資料結構以某種方式引用(指向)資料,以協助快速查詢、更新資料庫表中資料。
(2)底層實現:索引的實現通常使用B樹及其變種B+樹。
(3)代價:為表設定索引要付出代價的:一是增加了資料庫的儲存空間,二是在插入和修改資料時要花費較多的時間進行索引的維護(因為索引也要隨之變動)。
(4)結構:
Image
(5)建立索引可以大大提高系統的效能。
第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。
第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。
第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。
(6)在哪些列上適合建立索引?
在經常需要搜尋的列上,可以加快搜索的速度;
在經常用在連線的列上,這些列主要是一些外來鍵,可以加快連線的速度;
在經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,
加快排序查詢時間;
在經常使用在WHERE子句中的列上面建立索引,加快條件的判斷速度。
(7)哪列不應該建立索引?
第一,對於那些在查詢中很少使用或者參考的列不應該建立索引。
第二,對於那些只有很少資料值的列也不應該增加索引。
第三,對於那些定義為text, image和bit資料型別的列不應該增加索引。這是因為,這些列的資料量要麼相當大,要麼取值很少。
第四,當修改效能遠遠大於檢索效能時,不應該建立索引。這是因為,修改效能和檢索效能是互相矛盾的。當增加索引時,會提高檢索效能,但是會降低修改效能。當減少索引時,會提高修改效能,降低檢索效能。因此,當修改效能遠遠大於檢索效能時,不應該建立索引。
(8)資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引。
唯一索引
唯一索引是不允許其中任何兩行具有相同索引值的索引。
當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在employee表中職員的姓(lname)上建立了唯一索引,則任何兩個員工都不能同姓。
主鍵索引
主鍵索引指的就是主鍵,主鍵既是約束,也是索引,主鍵是索引的一種,是唯一索引的特殊型別。建立主鍵的時候,資料庫預設會為主鍵建立一個唯一索引。
該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。
聚集索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。
(9)主鍵索引和唯一索引的區別?
主鍵建立後一定包含一個唯一性索引,唯一性索引並不一定就是主鍵。
唯一性索引列允許空值,而主鍵列不允許為空值。
主鍵可以被其他表引用為外來鍵,而唯一索引不能。
一個表最多隻能建立一個主鍵,但可以建立多個唯一索引。
主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。
4.問到了SQL語句每句話的執行順序,如:
Select *
from student
where a=5
group b>5
order by b
limit 2,3
解析:
這裡寫圖片描述


5.Jsp的九大內建物件
6.問了resuest.getparameter和request.getattribute的返回型別
request.getParameter(“name”)返回String型別,request.getAttribute(“name”)返回object型別
無論是request.getParameter(“name”)還是request.getAttribute(“name”),如果在上下文中沒有name的話,都會返回null值
7.介面和抽象類
8.資料庫的內連線和外連線
9.HashTable和HashMap
Vector和ArrayList
StringBulider和StringBuffer
(前面是同步的,後面是不同步的)
10.問了我專案,我覺得他問的目的有兩個:
(1)首先是問一些關於這個專案的簡單問題,如:運用了什麼技術,資料庫中都有哪幾個表。這是為了確認這個專案是不是你做的。
(2)接下來就會問一些深入的問題,如:資料庫是如何進行優化設計的(我答:我運用了第三正規化,讓資料的冗餘更少一些。在使用者密碼存放時,當時並未採取加密措施,不過後來經過了解,覺得加密處理後會更好一些,如:MD5加密)。這是為了探索你的技術能到什麼樣的深度,所以自己要適當的多說一些。
11.這個面試官主要是針對我的簡歷所寫到的提出一些問題,當他看到我寫到的技能時,便問我:”我看你前端的知識寫了很多,那你能說一說你用過那些前端框架嗎?”我答:”用過Jquery,最近也在看bootstrap”。接著面試官又問:”那你知道MVW嗎?”(好像叫這個,一個新興的前端框架)我答:”這個不太瞭解,我看他和MVC很像啊。”面試官又問:”那你和我說一下這個MVC吧。”終於轉到我會的了,於是我們就開始往下聊……
所以一定要把面試官往你會的地方轉,面試官其實更想知道你會哪些,而不是不會哪些。所以只要引導面試官,面試官很有可能向著你的思路來。

3.提問環節

有些公司在面試最後,會問問你有沒有什麼問題。提問題時真的得注意,我就覺得自己當時提的問題不好。

總結

1.自我介紹最好中規中矩,可以用”接下來我從三方面向您介紹我自己,首先;其次;最後;”的層次更好的展現。
2.答題時真的是要謙虛,反應不能太慢,最好使用”第一,第二……”這樣的結構
3.遇到會的就多拓展的說一些,往深了說。
4.遇到不會的,想一想能否與會的知識靠一下,靠不了就痛快的承認”不好意思,這個我不是很瞭解”。不要思考半天再回答,拖泥帶水。
5.多誇誇公司和麵試官,可能會有意外的效果。
6.最後提問時可以提前在網上找好幾個問題。