我的后臺(tái)Java面經(jīng)(阿里、騰訊、頭條、京東、IBM等)

# 簡(jiǎn)介

經(jīng)過(guò)招聘季每個(gè)人都會(huì)有相當(dāng)多的面試經(jīng)歷,對(duì)我來(lái)說(shuō)把這些寫(xiě)出來(lái)一方面是為了學(xué)習(xí),另外一方面也希望能夠?yàn)橹笄舐毜耐瑢W(xué)提供一定的借鑒意義

我的筆試經(jīng)歷會(huì)把主要記得的題目列出來(lái)

我的面試經(jīng)歷詳細(xì)介紹了以下幾點(diǎn)

面試崗位

面試體驗(yàn):這個(gè)有主觀成分,但也能從我個(gè)人的側(cè)面去反映公司是如何對(duì)待招聘的,請(qǐng)記住“面試者也是面試官,反之亦然”

面試問(wèn)題:在面試過(guò)程中被面試官提問(wèn)的問(wèn)題


拉勾offer工廠2017資料,是當(dāng)時(shí)拉勾做的一系列沙龍活動(dòng),其中ppt提到的面試問(wèn)題很有參考價(jià)值,故而放到其中

我面試的崗位主要是后臺(tái)開(kāi)發(fā)和Java開(kāi)發(fā)崗,有關(guān)Java的復(fù)習(xí)策略在我的一篇博客中有寫(xiě)

了解單獨(dú)公司的單獨(dú)部門(mén)情況,我又拆分了一下各公司的情況,想單獨(dú)了解公司的可以去看各個(gè)公司的我個(gè)人面試情況


# 京東金融面試

面試崗位為JAVA開(kāi)發(fā)實(shí)習(xí)生,一共有兩面,第一位是年長(zhǎng)的工程師,第二位是年輕的工程師,側(cè)重角度不一樣。第一位主要了解你的整體情況和個(gè)人想法,以聊天為主。第二位問(wèn)了很多細(xì)節(jié)的題目,以問(wèn)答為主。下面列舉一下我遇到的問(wèn)題

java設(shè)計(jì)模式有哪些,講講單例模式具體怎么寫(xiě)還有具體用在哪里?裝飾者模式是什么意思?


現(xiàn)在有三個(gè)表

S表

C表

SC表

查找出“數(shù)學(xué)分?jǐn)?shù)最高的人名”,寫(xiě)個(gè)sql語(yǔ)句代碼,寫(xiě)的時(shí)候我使用了in,然后問(wèn)到in和exist的區(qū)別,哪個(gè)效率更好?SQL優(yōu)化了解哪些?

springmvc路由你是怎么寫(xiě)的

答:xml配置或者注解,RequstMapping

springmvc如何接受ajax數(shù)據(jù)

答:有兩個(gè)注解,一個(gè)能接收json數(shù)據(jù),另外一個(gè)能返回json數(shù)據(jù),好像是ResponseBody和RequestBody

前端多級(jí)級(jí)聯(lián)的select怎么寫(xiě),比如說(shuō)選擇了河北省,下一級(jí)就會(huì)出現(xiàn)城市名

答:使用jQuery,change監(jiān)聽(tīng)函數(shù)里寫(xiě)ajax,返回后使用append函數(shù)加入下一級(jí)標(biāo)簽中

java的堆和棧怎么理解的

String a = "a",“a”存到了java的哪個(gè)區(qū)

答:靜態(tài)區(qū)

a的值是多少?

答:是“a”,因?yàn)閖ava都是值傳遞,不是引用傳遞

"a"會(huì)被銷毀么?

答:不會(huì),因?yàn)閟tring的加法運(yùn)算相當(dāng)于新建了一個(gè)對(duì)象,所以不會(huì)銷毀

mybatis #和$區(qū)別

linux如何查看進(jìn)程占用cpu和內(nèi)存情況

答:top指令

linux如何部署war包?


java環(huán)境搭建都用什么指令?


dns服務(wù)器如果域名和ip不一致,訪問(wèn)了該域名會(huì)發(fā)生什么?

如果路由器上路由表內(nèi)沒(méi)有你要訪問(wèn)的地址會(huì)發(fā)生什么?

sql優(yōu)化知道什么

數(shù)據(jù)庫(kù)字符亂碼可能是哪兒的問(wèn)題

nosql數(shù)據(jù)庫(kù)用過(guò)什么,為什么使用

redis用過(guò)么,怎么理解的

棧都有哪些典型用途

答:十進(jìn)制轉(zhuǎn)二進(jìn)制、括號(hào)匹配、二叉樹(shù)非遞歸遍歷

java虛擬機(jī)都知道什么

抽象類和接口有什么區(qū)別

重載和重寫(xiě)的區(qū)別

有沒(méi)有看過(guò)框架源代碼

sql分頁(yè)查詢?cè)趺磳?xiě)

mybatis實(shí)現(xiàn)原理、springmvc實(shí)現(xiàn)原理

SQL語(yǔ)句exist和in的區(qū)別


還有如果簡(jiǎn)歷里放了博客的話,人家可能會(huì)問(wèn)你分享一篇你覺(jué)得你寫(xiě)的不錯(cuò)的博客

查找13條到23條的sql語(yǔ)句

答:select * from name limit 13,10

#?滴滴面試

面試崗位為后臺(tái)開(kāi)發(fā)實(shí)習(xí)生,一共有兩個(gè)面試官,面試的部門(mén)為地圖開(kāi)發(fā)部,主要使用語(yǔ)言是C++和Python,后臺(tái)使用的是flask框架,總體上問(wèn)的比較籠統(tǒng),問(wèn)細(xì)節(jié)上的不是特別多,有一些問(wèn)題也沒(méi)答上來(lái)

數(shù)據(jù)庫(kù)引擎InnoDB和MyISAM的區(qū)別

大數(shù)據(jù)方面你讀過(guò)什么書(shū)么,想做這方面的你有什么優(yōu)勢(shì)

寫(xiě)個(gè)二叉樹(shù)的廣度遍歷和深度遍歷

ORM的實(shí)現(xiàn)原理

Map Reduce的具體細(xì)節(jié)步驟


# 今日頭條面試

面試崗位為后臺(tái)開(kāi)發(fā)實(shí)習(xí)生,一共有四個(gè)面試官,面試的部門(mén)為懂車帝,主要是做后臺(tái)服務(wù)的,前三個(gè)應(yīng)該是技術(shù)面試,但是第三個(gè)面試特別快,前兩個(gè)面的比較久,第四個(gè)是hr面試,聊了聊今日頭條的情況,帶我參觀了下今日頭條的工作區(qū),整體環(huán)境還蠻不錯(cuò)的,據(jù)說(shuō)提供一日三餐

第一面

介紹一下項(xiàng)目

講講區(qū)塊鏈和最近讀的論文

比如1234的下一個(gè)比他大的數(shù)是1243,再下一個(gè)是1324,如何給出下一個(gè)數(shù)找到比他大的數(shù)

二叉樹(shù)上最大值和最小值節(jié)點(diǎn)路徑距離是多少?

3 2 4 1 0

像上面的樹(shù)就是0和4,距離為3,其實(shí)本質(zhì)就是遍歷一遍先找到最大值和最小值,然后從根路徑上進(jìn)行遍歷,從兩個(gè)值路徑分開(kāi)開(kāi)始記錄遍歷層數(shù),然后加起來(lái)就是距離

問(wèn)問(wèn)實(shí)習(xí)經(jīng)歷

第二面

介紹一下項(xiàng)目

講講區(qū)塊鏈,對(duì)我們當(dāng)前的設(shè)計(jì)產(chǎn)生了極大的疑問(wèn),我也沒(méi)有解釋清楚,然后被鄙視了下研究生畢業(yè)設(shè)計(jì)沒(méi)準(zhǔn)備、研究方向不明確

問(wèn)我熟悉哪門(mén)語(yǔ)言,我說(shuō)java和python,然后問(wèn)我學(xué)習(xí)過(guò)c++木有,我說(shuō)本科學(xué)習(xí)過(guò),然后就出了個(gè)strcpy庫(kù)函數(shù)的實(shí)現(xiàn),說(shuō)很簡(jiǎn)單,,,結(jié)果空指針處理什么的,也沒(méi)弄清楚,最后也沒(méi)寫(xiě)明白

有兩個(gè)文件a和b,找出里面相同的url,最開(kāi)始我寫(xiě)的是遍歷,時(shí)間復(fù)雜度是n2,然后用排序復(fù)雜度是nlogn,想起了字典樹(shù),復(fù)雜度是nlogm,面試官說(shuō)可以用hash,復(fù)雜度就到n了,整個(gè)過(guò)程也不是很順利

第三面

講講區(qū)塊鏈,又講了下我看的論文

問(wèn)問(wèn)你覺(jué)得你的優(yōu)點(diǎn)是什么,缺點(diǎn)是什么

你覺(jué)得你是屬于更能堅(jiān)持的類型還是說(shuō)更喜歡接觸不同的新技術(shù)類型

除了技術(shù)外還有什么愛(ài)好

問(wèn)問(wèn)實(shí)習(xí)經(jīng)歷

第四面hr小姐姐

問(wèn)問(wèn)你的學(xué)習(xí)方向,用什么語(yǔ)言

頭條你都了解什么

工作時(shí)間了解么

balabala,總之hr還是相對(duì)和藹可親的

面完一天后生無(wú)可戀,回來(lái)就睡,太難受了

# Redhat面試

面試崗位為JAVA的wildfly中間件開(kāi)發(fā)實(shí)習(xí)生,套路和之前的不一樣,是先讓做一個(gè)工程,使用maven做一個(gè)J2EE的hello world,然后做單元測(cè)試,改了好久,直到這周才接到面試通知,本來(lái)打算直接是外國(guó)人的外語(yǔ)面試,但是由于經(jīng)理很忙,就先由小組的中國(guó)人來(lái)面試。主要語(yǔ)言就是用JAVA,然后也先講清楚了要做什么,和其他的面試很不一樣,也是怕我沒(méi)想清楚,畢竟和其他的實(shí)習(xí)性質(zhì)有所區(qū)別,是在做開(kāi)源,而且不是做常見(jiàn)的web開(kāi)發(fā),而是底層中間件web服務(wù)器的實(shí)現(xiàn),包括需要測(cè)試東西,其實(shí)感覺(jué)我的個(gè)人經(jīng)歷和要求其實(shí)并沒(méi)有很搭配,面試官對(duì)web開(kāi)發(fā)相關(guān)的也并不是很了解,更多的是希望我沉下心來(lái)讀很多的源代碼,會(huì)很枯燥。

了解java什么,lambda表達(dá)式本質(zhì)是什么?

maven中之前讓你寫(xiě)的phase表示什么意思?

英語(yǔ)自我介紹一下,你想學(xué)的是什么,不想學(xué)什么(純英語(yǔ)面試)?

git rebase是做什么用的?

有關(guān)注過(guò)什么開(kāi)源項(xiàng)目?

平時(shí)用什么操作系統(tǒng)

之前說(shuō)的工程里的有關(guān)單元測(cè)試的問(wèn)題你懂了么?不應(yīng)該throw異常了還能正常通過(guò)單元測(cè)試。

這只是第一次面試,還有下一次的意大利視頻面試,是和外國(guó)面試官交流,壓力很大。

# Redhat 二面

第二次面試真是姍姍來(lái)遲,其實(shí)就是過(guò)去和中國(guó)面試官和外國(guó)面試官一起聊天,問(wèn)問(wèn)我?guī)讉€(gè)基本的問(wèn)題,并沒(méi)有技術(shù)問(wèn)題,其實(shí)就是練習(xí)下英語(yǔ)口語(yǔ),自己渣的可以,至于會(huì)不會(huì)被錄取也不知道,聽(tīng)天由命吧。

#?阿里巴巴面試

面試崗位為JAVA開(kāi)發(fā)實(shí)習(xí)生,今天已經(jīng)不是第一次面試了,之前有一次,但是當(dāng)時(shí)沒(méi)記錄,只好記錄這次的了

自我介紹

講一個(gè)項(xiàng)目,我說(shuō)的區(qū)塊鏈,然后圍繞著區(qū)塊鏈說(shuō)了一堆,比如說(shuō)我沒(méi)回答上來(lái)的,有沒(méi)有做性能測(cè)試,還有orderer節(jié)點(diǎn)都有什么服務(wù)

最大堆概念

排序算法比較排序時(shí)間復(fù)雜度,如何查找最大的1000個(gè)數(shù)

有沒(méi)有什么排序算法能夠小于nlogn的

# 美團(tuán)面試

這次面試一共有兩面,第一面比較簡(jiǎn)單問(wèn)了很多基礎(chǔ)問(wèn)題,基本都能答上來(lái),第二面問(wèn)了很多細(xì)節(jié)問(wèn)題,有很多發(fā)現(xiàn)自己理解不深刻,出現(xiàn)了問(wèn)題,記錄幾個(gè)

跨域的理解,只有瀏覽器才可能存在跨域,跨域其實(shí)是在請(qǐng)求了某個(gè)域名的服務(wù)之后同時(shí)又去發(fā)起了其他域名的請(qǐng)求,所以只有瀏覽器可能存在,因?yàn)樗麜?huì)請(qǐng)求回來(lái)靜態(tài)資源后解析再次發(fā)送請(qǐng)求,而類似于postman就不會(huì)有這樣的問(wèn)題,因?yàn)樗玫降氖庆o態(tài)資源文本而不會(huì)再次做解析

tomcat解析sevlet發(fā)生了什么?

對(duì)于搶單場(chǎng)景要怎樣設(shè)置數(shù)據(jù)庫(kù),要分開(kāi)然后利用nginx根據(jù)hash去存庫(kù),查找也是同理

JSONP如何理解,為什么沒(méi)有使用

還問(wèn)了兩道算法題,但是自己寫(xiě)的比較慢,而且也不敢保證正確,畢竟好久沒(méi)練了,但是題目都不難

最小堆如何做插入和刪除的

HashMap如何映射到內(nèi)存里

如何評(píng)價(jià)自己在云平臺(tái)項(xiàng)目的表現(xiàn)

數(shù)據(jù)庫(kù)線程池有哪幾種

對(duì)稱密鑰和非對(duì)稱密鑰是用來(lái)解決什么問(wèn)題的

#?IBM電話

投遞的郵件有作用了,那邊在做區(qū)塊鏈醫(yī)療,招收實(shí)習(xí)生

是否有g(shù)olang的開(kāi)發(fā)經(jīng)驗(yàn)

fabric了解哪些

nodejs開(kāi)發(fā)經(jīng)驗(yàn)

醫(yī)療你們這邊在做什么

# 京東金融面試

面試崗位

JAVA開(kāi)發(fā)實(shí)習(xí)生

面試體驗(yàn)

一共有兩面,電話面試,第一面考察區(qū)塊鏈,第二面考察java基礎(chǔ),問(wèn)了很久,態(tài)度很認(rèn)真

面試問(wèn)題

區(qū)塊鏈交易流程?

java中spring是如何理解的?

四道算法題:

第一題:一個(gè)人一次可以上一個(gè)臺(tái)階或者兩個(gè)臺(tái)階,問(wèn)到第n個(gè)臺(tái)階有多少種方法?

第二題:n*m的迷宮,只能向右或者向下走,從左上角到右下角有多少條路線

第三題:100101這樣的數(shù)組,1表示有人在椅子上,0表示沒(méi)人在,找到一個(gè)沒(méi)人在的地方且距離所有人的距離之和最大

第四題:有一億個(gè)數(shù),找到第10大的數(shù)

4. hashmap結(jié)構(gòu)

5. get和post區(qū)別

# 京東金融面試

面試崗位

JAVA開(kāi)發(fā)實(shí)習(xí)生

面試體驗(yàn)

非常糟糕!因?yàn)橹懊嬖囘^(guò)所以只面了一次,而且在此次面試中知道了京東原來(lái)打著提前批的旗號(hào)結(jié)果是實(shí)習(xí)不給校招offer,真是套路滿滿,而且按照時(shí)間到了通州的京東之后hr臨時(shí)預(yù)約邀請(qǐng)碼,過(guò)了半個(gè)小時(shí)才帶我上去,上去面了之后,居然又是半個(gè)小時(shí)沒(méi)有人理我了,面試場(chǎng)地已經(jīng)沒(méi)有人了而且到了下班時(shí)間,然后給hr打電話不接發(fā)微信不回,過(guò)了十分鐘我離開(kāi)京東大廈,拉黑了京東金融的hr,這次面試導(dǎo)致了我生平第一次拉黑別人

面試問(wèn)題

java有什么更多的學(xué)習(xí)和了解,分布式?多線程?

金融系統(tǒng)的容錯(cuò)級(jí)別很高,講了很多,balabala

# 拼多多筆試

不用多說(shuō)了,四道算法題

第一題

題目描述

自動(dòng)售貨機(jī)里有 N 瓶復(fù)制可樂(lè)。復(fù)制可樂(lè)非常神奇,喝了它的人會(huì)復(fù)制出一個(gè)自己來(lái)!

現(xiàn)在有 Alice, Bob, Cathy, Dave 四個(gè)人在排隊(duì)買復(fù)制可樂(lè)。買完的人會(huì)馬上喝掉,然后他和他的副本會(huì)重新去隊(duì)伍的最后面排隊(duì)買可樂(lè)。

問(wèn)最后一個(gè)買到復(fù)制可樂(lè)的人叫什么名字?

輸入描述:

輸入僅有一行,包含一個(gè)正整數(shù) N (1 <= N <= 1,000,000,000),表示可樂(lè)的數(shù)量。

輸出描述:

輸出喝到最后一罐復(fù)制可樂(lè)的人的名字。

示例1

輸入8輸出Bob

說(shuō)明:

前8個(gè)喝到可樂(lè)的人依次為:Alice, Bob, Cathy, Dave, Alice, Alice, Bob, Bob.

解題思路

代碼

importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);String[] names = {"Alice","Bob","Cathy","Dave"};while(sc.hasNext()) {longN = sc.nextLong();longi =0;longbasic =4;while(N > basic) {? ? ? ? ? ? ? ? N -= basic;basic *=2;? ? ? ? ? ? ? ? i++;? ? ? ? ? ? }inty = (int) Math.ceil(N / Math.pow(2, i));System.out.println(names[y -1]);? ? ? ? }? ? }}

第二題

題目描述

四年一度的世界杯又來(lái)了!小多在公司內(nèi)發(fā)起了一個(gè)票選最強(qiáng)球星的活動(dòng)。共有 N 個(gè)候選球星,每位投票者需要在選票上為每位候選球星評(píng)定一個(gè)實(shí)例等級(jí),等級(jí)由英文字母表示,'a' 級(jí)最高,'z' 級(jí)最低,共26級(jí)。

我們稱候選球星 X 強(qiáng)于候選球星 Y,當(dāng)「 X 的評(píng)級(jí)比 Y 高」的票數(shù)高于「 Y 的評(píng)級(jí)比 X 高」的票數(shù)。若一個(gè)候選球星強(qiáng)于任一其他候選球星時(shí),則稱該球星為“球王”。根據(jù)這個(gè)規(guī)則,至多只會(huì)有一個(gè)球王。需要注意的是也可能沒(méi)有球王?,F(xiàn)在給出所有 M 張選票,請(qǐng)你幫小多判斷一下哪位候選球星是球王。

輸入描述:

第一行包含2個(gè)整數(shù) N、M,分別表示候選球星數(shù)量以及選票數(shù)量。接下來(lái)有 M 行,每行是一個(gè)長(zhǎng)度為 N 的字符串,每個(gè)字符串表示一張選票上的信息。每個(gè)字符串的第 k (0 <= k < N) 個(gè)字符,

表示這張選票對(duì)第 k 個(gè)候選球星的評(píng)級(jí)。

數(shù)據(jù)范圍:

1<= N <= 501<= M <= 50字符串只包含小寫(xiě)英文字母(a-z)。

輸出描述:

若有球王,則輸出一行僅包含一個(gè)整數(shù) X,表示編號(hào)為 X (0 <= X < N) 的候選球星是球王;若沒(méi)有球王,則輸出一行僅包含一個(gè)整數(shù) -1 。

示例1

輸入43acbdbacdbdca輸出0

示例2

輸入4 1acad輸出-1

解題思路

代碼

import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);while(sc.hasNext()) {intN = sc.nextInt();intM = sc.nextInt();? ? ? ? ? ? sc.nextLine();String[] notes =newString[M];for(inti =0; i < M; i++) {if(sc.hasNext())? ? ? ? ? ? ? ? ? ? notes[i] = sc.nextLine();? ? ? ? ? ? }int[][] matrix =newint[N][N];for(inti =0; i < M; i++) {for(intj =0; j < N; j++) {chara = notes[i].charAt(j);for(intk = j +1; k < N; k++) {charb = notes[i].charAt(k);if(a < b) {matrix[j][k] +=1;}elseif(b < a) {matrix[k][j] +=1;? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? }? ? ? ? ? ? }boolean flag =true;for(inti =0; i < N; i++) {flag =true;for(intj =0; j < N; j++) {if(i == j)continue;if(matrix[i][j] <= matrix[j][i]) {flag =false;break;? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? }if(flag) {System.out.println(i);break;? ? ? ? ? ? ? ? }? ? ? ? ? ? }if(!flag)System.out.println(-1);? ? ? ? }? ? }}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容