evanzheng2013
初級java工程師多數(shù)是剛畢業(yè)或者工作1,2年的新人。對于新人,面試中基礎(chǔ)問題會問道很多,因為先要考察這個人的基礎(chǔ)。
關(guān)于基礎(chǔ)類的題目,我在面試初級java工程師的時候一般會問下面兩大類問題,每類5個題目,這樣下來我就基本可以了解這位工程師的程度了。
java基礎(chǔ)類
面向?qū)ο蠡A(chǔ)類
java基礎(chǔ)類
1.描述一下java的訪問修飾符,和它們之間的區(qū)別?
回答:如果可以回到出public,private,protected,就算是ok;回答出default的,加分。
2. int和Integer 區(qū)別?
回答:如果回答出Integer是int的包裝類,就算ok;回答出其他的基本類型和它們相應(yīng)的包裝類,加分。
3.如何定義一個單精度浮點類型的變量?
回答:float 變量名= ;回答出不加最后的f為雙精度浮點類型,加分
4. equals和==的區(qū)別?
回答: equals是值比較(一般處理java開發(fā)都會這么說,算是ok的)而==是引用比較(或者對象比較);回答equals是可以自定義的,加分
5.將一個數(shù)組作為參數(shù)傳遞到一個方法中,在方法中,數(shù)組內(nèi)的元素值被改變了,那么在方法外部,這個數(shù)組內(nèi)的元素是否也被改編了?
回答:是,因為java方法中傳遞的是引用,就ok。如果回答中,將引用說明了自己的理解,加分。
面向?qū)ο蠡A(chǔ)類
1.重載和重寫的區(qū)別?
回答:這個看個人理解,理解沒有什么大的偏差就ok;回答出多態(tài)相關(guān)的,加分。
2.構(gòu)造方法能不能重載?
回答:可以重載,ok;回答構(gòu)造方法時不能繼承的,所以如果要調(diào)用指定父類構(gòu)造器就必須重寫子類構(gòu)造方法,加分。
3.抽象方法(abstract)是否可以被final、static、native修飾?
回答:都不可以,因為抽象方法是必須子類實現(xiàn)的,final方法時不可以被重寫的,static是父類必須實現(xiàn)的方法,native是本地語言實現(xiàn)的方法?;卮鸪龇庋b和繼承相關(guān)的,加分
4.當(dāng)父類引用指向子類對象的時候,子類重寫了父類方法和屬性,那么當(dāng)訪問屬性的時候,訪問是誰的屬性?調(diào)用方法時,調(diào)用的是誰的方法?
回答:訪問的是父類的屬性,調(diào)用的是子類的方法,ok;如果可以畫圖解釋的話,加分
5.抽象類和接口有什么異同?
回答:一些類定義上的區(qū)別,ok;回答在應(yīng)用過程中,如何根據(jù)業(yè)務(wù)定義接口,加很多分
最后,如果前面問題回答的不錯,會補充兩個編程習(xí)慣問題。
1.在你寫過的代碼中,你寫過超過2層的循環(huán)嗎,怎么實現(xiàn)的?
回答:沒有,就算ok;如果回答有,聽一下實現(xiàn),如果原因說不出來,扣分。
2.在你寫過的代碼中,if語句最多嵌套了幾層,最多有多少分支,怎么實現(xiàn)的?
回答:3層以下,就算ok;如果回答3層以上,聽一下實現(xiàn),如果原因說不出來,扣分。
4,5個分支,就算ok;如果回答5個分支以上,聽一下實現(xiàn),如果原因說不出來,扣分。
最后兩個題其實比較陷阱,但是正是一個反向的思考才能了解面試者之前的工作狀態(tài)。
如果面試者在平日里就有好的習(xí)慣,自然不用擔(dān)心。
桃源搗主
本文只列出了問題,答案還是需要需要自己的總結(jié),很多時候自己總結(jié)出來的語言在面試時比硬背的效果好很多。
這些題目是網(wǎng)友去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術(shù)面試的幾率。
熟練掌握java是很關(guān)鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉源碼實現(xiàn)原理,甚至要你知道有哪些不足,怎么改進,還有一些java有關(guān)的一些算法,設(shè)計模式等等。
(一) java基礎(chǔ)面試知識點
不是我的白云
發(fā)展前景好的很!1.想要通關(guān)大廠面試,千萬別讓數(shù)據(jù)結(jié)構(gòu)和算法拖了后腿2.業(yè)務(wù)開發(fā)工程師,你要做一輩子的CRUDboy嗎?3.我們平時用到的很多業(yè)務(wù)開發(fā)框架,其實底層都糅合了很多數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計思想4.掌握算法與數(shù)據(jù)結(jié)構(gòu),用利于我們看懂開發(fā)源代碼,理解框架背后的真實含義。5.掌握算法與數(shù)據(jù)結(jié)構(gòu),在開發(fā)過程種,看待問題的深度,解決問題的角度將會大大不同。
么么噠噠啦
參考:
反卷積也稱為轉(zhuǎn)置卷積,如果用矩陣乘法實現(xiàn)卷積操作,將卷積核平鋪為矩陣,則轉(zhuǎn)置卷積在正向計算時左乘這個矩陣的轉(zhuǎn)置WT,在反向傳播是左乘W,與卷積操作剛好相反,需要注意的是,反卷積不是卷積的逆運算。 [知乎問題+caffe實現(xiàn)]
實現(xiàn)上采樣;近似重構(gòu)輸入圖像,卷積層可視化。
只要激活函數(shù)選擇得當(dāng),神經(jīng)元的數(shù)量足夠,至少有一個隱含層的神經(jīng)網(wǎng)絡(luò)可以 逼近閉區(qū)間上任意一個連續(xù)函數(shù)到任意指定的精度。
判別模型,直接輸出類別標(biāo)簽,或者輸出類后驗概率p(y|x) [ ] [ ] [ ]
BN是在 batch這個維度上進行歸一化,GN是計算channel方向每個group的均值方差.
檢測結(jié)果與 Ground Truth 的交集比上它們的并集,即為檢測的準(zhǔn)確率 IoU
內(nèi)存/顯存占用;模型收斂速度等
Hessian矩陣是n*n, 在高維情況下這個矩陣非常大,計算和存儲都是問題。
mini-batch太小會導(dǎo)致收斂變慢,太大容易陷入sharp minima,泛化性不好。
可以把dropout看成是 一種ensemble方法,每次做完dropout相當(dāng)于從原網(wǎng)絡(luò)中找到一個更瘦的網(wǎng)絡(luò)。
pooling操作雖然能增大感受野,但是會丟失一些信息。空洞卷積在卷積核中插入權(quán)重為0的值,因此每次卷積中會skip掉一些像素點;
空洞卷積增大了卷積輸出每個點的感受野,并且不像pooling會丟失信息,在圖像需要全局信息或者需要較長sequence依賴的語音序列問題上有著較廣泛的應(yīng)用。
表達式為:
使用BN的原因是網(wǎng)絡(luò)訓(xùn)練中每一層不斷改變的參數(shù)會導(dǎo)致后續(xù)每一層輸入的分布發(fā)生變化,而學(xué)習(xí)的過程又要使每一層去適應(yīng)輸入的分布,因此不得不降低網(wǎng)絡(luò)的學(xué)習(xí)率,并且要小心得初始化(internal covariant shift) 如果僅通過歸一化方法使得數(shù)據(jù)具有零均值和單位方差,則會降低層的表達能力(如使用Sigmoid函數(shù)時,只使用線性區(qū)域) BN的具體過程(注意第三個公式中分母要加上epsilon)
最好的解釋是通過1 * 1卷積核能實現(xiàn)多個channel間的解耦合,解耦cross-channel correlation和spatial correlation。 【但是因為解耦不徹底,因此后續(xù)有了mobile net的組卷積方式和shuffle net組卷積方式】
由于 1×1 并不會改變 height 和 width,改變通道的第一個最直觀的結(jié)果,就是可以將原本的數(shù)據(jù)量進行增加或者減少。改變的只是 height × width × channels 中的 channels 這一個維度的大小而已。
1*1卷積核,可以在保持feature map尺度不變的(即不損失分辨率)的前提下大幅增加非線性特性(利用后接的非線性激活函數(shù)),把網(wǎng)絡(luò)做的很deep。
備注:一個filter對應(yīng)卷積后得到一個feature map,不同的filter(不同的weight和bias),卷積以后得到不同的feature map,提取不同的特征,得到對應(yīng)的specialized neuron。
例子:使用1x1卷積核,實現(xiàn)降維和升維的操作其實就是channel間信息的線性組合變化,3x3,64channels的卷積核后面添加一個1x1,28channels的卷積核,就變成了3x3,28channels的卷積核,原來的64個channels就可以理解為跨通道線性組合變成了28channels,這就是通道間的信息交互
注意:只是在channel維度上做線性組合,W和H上是共享權(quán)值的sliding window
并不能說明這個模型無效導(dǎo)致模型不收斂的原因可能有
A. 在實際場景下,應(yīng)盡量使用ADAM,避免使用SGD B. 同樣的初始學(xué)習(xí)率情況下,ADAM的收斂速度總是快于SGD方法 C. 相同超參數(shù)數(shù)量情況下,比起自適應(yīng)的學(xué)習(xí)率調(diào)整方式,SGD加手動調(diào)節(jié)通常會取得更好效果 D. 同樣的初始學(xué)習(xí)率情況下,ADAM比SGD容易過擬合
A.保證每一層的感受野不變,網(wǎng)絡(luò)深度加深,使得網(wǎng)絡(luò)的精度更高 B.使得每一層的感受野增大,學(xué)習(xí)小特征的能力變大 C.有效提取高層語義信息,且對高層語義進行加工,有效提高網(wǎng)絡(luò)準(zhǔn)確度 D.利用該結(jié)構(gòu)有效減輕網(wǎng)絡(luò)的權(quán)重
A.計算簡單 B.非線性 C.具有飽和區(qū) D.幾乎處處可微 【relu函數(shù)在0處是不可微的。】
的收斂速度比RMSprop慢 B.相比于SGD或RMSprop等優(yōu)化器,Adam的收斂效果是最好的 C.對于輕量級神經(jīng)網(wǎng)絡(luò),使用Adam比使用RMSprop更合適 D.相比于Adam或RMSprop等優(yōu)化器,SGD的收斂效果是最好的 【SGD通常訓(xùn)練時間更長,容易陷入鞍點,但是在好的初始化和學(xué)習(xí)率調(diào)度方案的情況下,結(jié)果更可靠。如果在意更快的收斂,并且需要訓(xùn)練較深較復(fù)雜的網(wǎng)絡(luò)時,推薦使用學(xué)習(xí)率自適應(yīng)的優(yōu)化方法。】
A.使用ReLU做為激活函數(shù),可有效地防止梯度爆炸 B.使用Sigmoid做為激活函數(shù),較容易出現(xiàn)梯度消失 C.使用Batch Normalization層,可有效的防止梯度爆炸 D.使用參數(shù)weight decay,在一程度上可防止模型過擬合
對結(jié)果存疑。認(rèn)為二者皆可防止。
L-BFGS(Limited-memory BFGS,內(nèi)存受限擬牛頓法)方法: 所有的數(shù)據(jù)都會參與訓(xùn)練,算法融入方差歸一化和均值歸一化。大數(shù)據(jù)集訓(xùn)練DNN,容易參數(shù)量過大 (牛頓法的進化版本,尋找更好的優(yōu)化方向,減少迭代輪數(shù))從LBFGS算法的流程來看,其整個的核心的就是如何快速計算一個Hesse的近似:重點一是近似,所以有了LBFGS算法中使用前m個近似下降方向進行迭代的計算過程;重點二是快速,這個體現(xiàn)在不用保存Hesse矩陣上,只需要使用一個保存后的一階導(dǎo)數(shù)序列就可以完成,因此不需要大量的存儲,從而節(jié)省了計算資源;重點三,是在推導(dǎo)中使用秩二校正構(gòu)造了一個正定矩陣,即便這個矩陣不是最優(yōu)的下降方向,但至少可以保證函數(shù)下降。 FTRL(Follow-the-regularized-Leader)是一種適用于處理超大規(guī)模數(shù)據(jù)的,含大量稀疏特征的在線學(xué)習(xí)的常見優(yōu)化算法,方便實用,而且效果很好,常用于更新在線的CTR預(yù)估模型;FTRL在處理帶非光滑正則項(如L1正則)的凸優(yōu)化問題上表現(xiàn)非常出色,不僅可以通過L1正則控制模型的稀疏度,而且收斂速度快;
在一定程度上解決了傳統(tǒng)RNN梯度消失或梯度爆炸的問題 相比于全連接的優(yōu)勢之一是模型復(fù)雜度低,緩解過擬合 C.只要參數(shù)設(shè)置合理,深度學(xué)習(xí)的效果至少應(yīng)優(yōu)于隨機算法 D.隨機梯度下降法可以緩解網(wǎng)絡(luò)訓(xùn)練過程中陷入鞍點的問題
實際上,現(xiàn)在有很多針對小目標(biāo)的措施和改良,如下:
最常見的是Upsample來Rezie網(wǎng)絡(luò)輸入圖像的大??;
用dilated/astrous等這類特殊的卷積來提高檢測器對分辨率的敏感度;(空洞卷積是針對圖像語義分割問題中下采樣會降低圖像分辨率、丟失信息而提出的一種卷積思路。利用添加空洞擴大感受野,讓原本3 x3的卷積核,在相同參數(shù)量和計算量下?lián)碛?x5(dilated rate =2)或者更大的感受野,從而無需下采樣。在保持參數(shù)個數(shù)不變的情況下增大了卷積核的感受野)
有比較直接的在淺層和深層的Feature Map上直接各自獨立做預(yù)測的,這個就是我們常說的尺度問題。
用FPN這種把淺層特征和深層特征融合的,或者最后在預(yù)測的時候,用淺層特征和深層特征一起預(yù)測;
SNIP(Scale Normalization for Image Pyramids)主要思路:
在訓(xùn)練和反向傳播更新參數(shù)時,只考慮那些在指定的尺度范圍內(nèi)的目標(biāo),由此提出了一種特別的多尺度訓(xùn)練方法。
大米粒圓又圓
《1-歡迎學(xué)習(xí)機器學(xué)習(xí)納米學(xué)位工程師課程(進階)》百度網(wǎng)盤資源免費下載
鏈接:
-歡迎學(xué)習(xí)機器學(xué)習(xí)納米學(xué)位工程師課程(進階)|3-探索性項目-泰坦尼克號幸存者分析|2-從人工智能到機器學(xué)習(xí)|1-歡迎學(xué)習(xí)機器學(xué)習(xí)工程師|說明.docx|4-學(xué)習(xí)項目介紹.mp4|3-機器學(xué)習(xí)無處不在.mp4|3-機器學(xué)習(xí)無處不在 答案.mp4|3-機器學(xué)習(xí)無處不在|2-機器學(xué)習(xí)與傳統(tǒng)編程的異同.mp4|1-歡迎來到機器學(xué)習(xí)課程.mp4|9-基礎(chǔ)知識:人工智能的四個學(xué)派.mp4|8-什么是基于知識的人工智能?.mp4|7-人工智能的實際運用:|7-人工智能的實際運用:Watson 答案.mp4
水云間秋憶
算法工程師是一個非常高端的職位,是非常緊缺的專業(yè)工程師,兼具前途和錢途。1、稀缺:互聯(lián)網(wǎng)的快速發(fā)展,大數(shù)據(jù)、人工智能的興起,使得算法崗位變多了,但是能勝任的人又寥寥無幾。2、培養(yǎng)成本很高:算法工程師的培養(yǎng),需要很高的成本。在上大學(xué)的時候就要受到名師指導(dǎo),進入公司后也要跟前輩學(xué)習(xí)。3、能力非常強:如果想成為一名算法工程師,不僅需要過硬的編程能力,還需要扎實的數(shù)學(xué)基礎(chǔ)和英文水平。算法工程師所需的知識絕對不僅僅只有計算機方面的知識,需要的是綜合能力得到全面培養(yǎng)。所以算法工程師薪酬高是有原因的,當(dāng)然前景也是非常好,如果想從事這個行業(yè),還是非常值得。 感興趣的話點擊此處,免費學(xué)習(xí)一下想了解更多有關(guān)算法工程師的相關(guān)信息,推薦咨詢達內(nèi)教育。作為國內(nèi)IT培訓(xùn)的領(lǐng)導(dǎo)品牌,達內(nèi)集團的每一名員工都以“幫助每一個學(xué)員成就夢想”為己任,也正因為達內(nèi)人的執(zhí)著與努力,達內(nèi)集團已成功為社會輸送了眾多合格人才,為廣大學(xué)子提供更多IT行業(yè)高薪機會,同時也為中國IT行業(yè)的發(fā)展做出了巨大的貢獻。
優(yōu)質(zhì)工程師考試問答知識庫