面試

怎么理解面向?qū)ο螅?/h5>

萬物皆對象〕伲現(xiàn)實(shí)生活中任何物體都屬于一類事務(wù)皱埠,每一個(gè)個(gè)體都是一類事物的實(shí)例熏版。
面向?qū)ο蟮奶匦裕?/p>

  • 封裝(把一類事物的屬性和行為抽象為一類,屬性私有氯夷,行為公開),
  • 繼承(將一類事物共有的屬性和行為抽象成父類靶擦,子類有自己特有的行為和屬性腮考,實(shí)現(xiàn)代碼的復(fù)用),
  • 多態(tài)(實(shí)現(xiàn)接口的重用玄捕,is-a變成has-a踩蔚,解除了父子類繼承的耦合度)
    面向?qū)ο蟮脑瓌t:單一指責(zé),開放封閉枚粘,里氏替換馅闽,接口隔離,依賴倒置
    重寫和重載的區(qū)別:
    重載:
    定義:在同一個(gè)類或與它的子類中馍迄,方法名相同而參數(shù)列表不同福也。(參數(shù)列表不同指的是參數(shù)的數(shù)量,類型攀圈,類型的順序這三種至少一種不同)
    注意:方法重載與返回值類型和訪問修飾符無關(guān)
    重寫:
    原因:父類的功能無法滿足子類的需求
    前提:必須存在繼承關(guān)系
    定義:在繼承關(guān)系中暴凑,子類定義與父類相同的方法
    原則:
    “二同”:即方法名相同,形參列表相同赘来;
    “二小”:子類方法返回值類型應(yīng)比父類方法返回值類型更小或相等现喳,子類方法聲明拋出的異常比父類方法聲明拋出的異常更小或者相等凯傲;
    “一大”:子類方法的訪問修飾符應(yīng)比父類方法更大或相等。
    注意:1.構(gòu)造方法不能被重寫(構(gòu)造方法必須與當(dāng)前類名相同)
    2.private修飾的方法不能被重寫
    3.Satic修飾的方法不能被重寫
    4.final修飾的方法不能被重寫
    重載是編譯時(shí)期的活動嗦篱,重寫是運(yùn)行時(shí)期的活動

線程池和參數(shù):

ThreadPoolExecutor的參數(shù):corePoolSize(核心線程數(shù)量)冰单,maximumPoolSize(線程最大線程數(shù)),workQuene(阻塞隊(duì)列)

如何理解線程安全:

確保接口堆共享變量的操作要具備原子性(同數(shù)據(jù)庫的原子性)灸促,可見性(volatile保證可見性诫欠,當(dāng)多個(gè)線程并發(fā)訪問共享變量時(shí),一個(gè)線程對變量進(jìn)行修改腿宰,其他線程能夠立即看到)呕诉,順序性

實(shí)現(xiàn)原子更新操作

常見的保證Java操作原子性的工具:鎖,同步方法或代碼塊吃度,循環(huán)CAS
使用鎖甩挫,可以保證同一時(shí)間只有一個(gè)線程能拿到鎖。

鎖(synchronized和lock):

Synchronized修飾非靜態(tài)同步方法時(shí)椿每,鎖住的是當(dāng)前實(shí)例伊者;synchronized修飾靜態(tài)同步方法時(shí),鎖住的是類的class對象间护;synchronized修飾靜態(tài)代碼塊時(shí)亦渗,鎖住的是關(guān)鍵字后面括號里的對象

既然鎖和synchronized可以保證原子性,為什么還需要AtomicInteger來保證原子操作

鎖和synchronized需要操作系統(tǒng)判斷誰來獲得鎖汁尺,開銷大法精,而AtomicInteger是通過cpu級的cas操作來保證原子性,開銷小痴突,使用AtomicInteger可以提高性能搂蜓。

a=a+b和a+=b的區(qū)別:

對于同樣類型的a,b來說辽装,執(zhí)行結(jié)果相同帮碰,但a+=b效率高
對于不同類型的a,b來說拾积,+=是運(yùn)算符殉挽,會強(qiáng)制類型轉(zhuǎn)換,不會編譯出錯(cuò)

get和post區(qū)別:

get產(chǎn)生一個(gè)tcp數(shù)據(jù)包拓巧,瀏覽器把http header和data一起發(fā)送出去斯碌,瀏覽器響應(yīng)200;post產(chǎn)生兩個(gè)tcp數(shù)據(jù)包肛度,瀏覽器先發(fā)送http header输拇,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data贤斜,瀏覽器響應(yīng)200

IoC原理:

反射與工廠模式
反射:通過獲取某個(gè)類的class對象后反向的獲取某個(gè)類或?qū)ο蟮膶傩约胺椒ㄐ畔?br> 反射實(shí)現(xiàn)的原因:每個(gè)類在加載的過程中都會生成一個(gè)代表這個(gè)類的java.lang.Class對象作為方法區(qū)數(shù)據(jù)訪問的入口

Bean生命周期

  1. 實(shí)例化bean對象(通過構(gòu)造方法或工廠方法)
  2. 設(shè)置對象屬性(setter策吠,依賴注入)
  3. 如果Bean實(shí)現(xiàn)了beanNameAware接口逛裤,工廠調(diào)用Bean的setBeanName()方法傳遞Bean的ID
  4. 如果Bean實(shí)現(xiàn)了BeanFactoryAware接口,工廠調(diào)用setBeanFactory()方法傳入工廠自身
  5. 將Bean實(shí)例化傳遞給Bean的后置處理器的postProcessBeforeInitialization(Object bean猴抹,String beanName)方法
  6. 調(diào)用Bean的初始化方法
  7. 將Bean實(shí)例傳遞給Bean的后置處理器的postProcessAfterInitialization(Object bean,String beanName)方法
  8. 使用bean
  9. 容器關(guān)閉前带族,調(diào)用bean的銷毀方法

二叉樹的前序中序后序遍歷:

前序:訪問根節(jié)點(diǎn),遍歷左子樹蟀给,遍歷右子樹
中序:遍歷左子樹蝙砌,訪問根節(jié)點(diǎn),遍歷右子樹
后序:遍歷左子樹跋理,遍歷右子樹择克,訪問根節(jié)點(diǎn)

Collection類:

Collection是對象集合,有兩個(gè)子接口List和Set:
List可以通過下標(biāo)取值前普,值可以重復(fù)肚邢,Set只能通過游標(biāo)取值,值不可以重復(fù)
ArrayList拭卿,Vector骡湖,LinkedList是List的實(shí)現(xiàn)類;
ArrayLsit線程不安全峻厚,Vector線程安全响蕴,這兩個(gè)類由數(shù)組實(shí)現(xiàn);
LinkedList線程不安全惠桃,底層由鏈表實(shí)現(xiàn)
Map是鍵值對集合:
HashTable和HashMap是Map的實(shí)現(xiàn)類
HashTable線程安全浦夷,不能存儲null值
HashMap線程不安全,可以存儲null值
線程安全的集合類:vector辜王,stack军拟,hashtable,enumeration

Tcp三次握手:

  1. 客戶端創(chuàng)建tcb誓禁,向服務(wù)器發(fā)出連接請求報(bào)文,SYN=1,同時(shí)選擇一個(gè)初始序列號seq=下肾档,tcp客戶端進(jìn)程進(jìn)入了SYN-SENT(同步已發(fā)送狀態(tài))
  2. Tcp服務(wù)器收到請求報(bào)文后摹恰,如果同意連接,則發(fā)出確認(rèn)報(bào)文怒见,ACK=1,SYN=1,確認(rèn)號是ACK=x+1,同時(shí)也為自己初始一個(gè)序列號seq=y尿扯,tcp服務(wù)器進(jìn)程進(jìn)入了SYN-RCVD(同步收到)狀態(tài)
  3. Tcp客戶進(jìn)程收到確認(rèn)后殉摔,還要向服務(wù)器給出確認(rèn),確認(rèn)的報(bào)文ACK=1,ACK=y+1,自己的序列號seq=x+1舵变,tcp連接建立酣溃,客戶端進(jìn)入establish(已建立連接)狀態(tài)
  4. 當(dāng)服務(wù)器收到客戶端的確認(rèn)后也進(jìn)入establish狀態(tài)瘦穆,然后開始通信

棧內(nèi)存和堆內(nèi)存的特點(diǎn)和區(qū)別,Java中怎么樣分配:

棧內(nèi)存中存放基本數(shù)據(jù)的變量和引用變量赊豌,堆內(nèi)存中存放new的對象和數(shù)組
基本數(shù)據(jù)類型棧中的值就是實(shí)際存儲的值扛或,引用類型棧中的值就是指向堆中的地址

對象序列化:

序列化就是把Java對象轉(zhuǎn)換為字節(jié)序列,寫入輸入流中碘饼。Java對象是在jvm中生成的熙兔,如果需要遠(yuǎn)程傳輸或保存在硬盤上,就需要將Java對象轉(zhuǎn)換成可傳輸?shù)奈募鳌?br> Java中實(shí)現(xiàn)序列化的兩種方式:實(shí)現(xiàn)Serializable接口或Externalizable
使用transient關(guān)鍵字修飾的變量不會被序列化

PV操作

PV操作是對信號量進(jìn)行的操作
信號量S是一個(gè)整數(shù)艾恼,S大于等于零時(shí)代表可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù)住涉,但S小于0時(shí)則表示正在等待使用共享資源的進(jìn)程數(shù)
P操作申請資源:
1. S-1
2. 若S-1后仍>0,則進(jìn)程繼續(xù)執(zhí)行
3. 若S-1后<0,則該進(jìn)程被阻塞后
V操作釋放資源:

  1. S+1
  2. 若結(jié)果>0,則進(jìn)程繼續(xù)執(zhí)行
  3. 若<0,則從該信號的等待隊(duì)列中喚醒一個(gè)等待進(jìn)程钠绍,然后返回原進(jìn)程繼續(xù)執(zhí)行

線程池的優(yōu)點(diǎn):

使用線程池可以減少創(chuàng)建和銷毀線程的次數(shù)舆声,重復(fù)使用線程∥宕龋可以根據(jù)系統(tǒng)的承受能力纳寂,調(diào)整線程池中工作線程的數(shù)量,防止因?yàn)橄倪^多內(nèi)存而導(dǎo)致服務(wù)器崩潰

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泻拦,一起剝皮案震驚了整個(gè)濱河市毙芜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌争拐,老刑警劉巖腋粥,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異架曹,居然都是意外死亡隘冲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門绑雄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來展辞,“玉大人,你說我怎么就攤上這事万牺÷拚洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵脚粟,是天一觀的道長覆旱。 經(jīng)常有香客問我,道長核无,這世上最難降的妖魔是什么扣唱? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上噪沙,老公的妹妹穿的比我還像新娘炼彪。我一直安慰自己,他們只是感情好曲聂,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布霹购。 她就那樣靜靜地躺著,像睡著了一般朋腋。 火紅的嫁衣襯著肌膚如雪齐疙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天旭咽,我揣著相機(jī)與錄音贞奋,去河邊找鬼。 笑死穷绵,一個(gè)胖子當(dāng)著我的面吹牛轿塔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仲墨,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼勾缭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了目养?” 一聲冷哼從身側(cè)響起俩由,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎癌蚁,沒想到半個(gè)月后幻梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡努释,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年碘梢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伐蒂。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煞躬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逸邦,到底是詐尸還是另有隱情恩沛,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布昭雌,位于F島的核電站,受9級特大地震影響健田,放射性物質(zhì)發(fā)生泄漏烛卧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望总放。 院中可真熱鬧呈宇,春花似錦、人聲如沸局雄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炬搭。三九已至蜈漓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宫盔,已是汗流浹背融虽。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灼芭,地道東北人有额。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像彼绷,于是被迫代替她去往敵國和親巍佑。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在寄悯,面了一些公司萤衰,掛了不少,但最終還是拿到小米热某、百度腻菇、阿里、京東昔馋、新浪筹吐、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,271評論 11 349
  • 在一個(gè)方法內(nèi)部定義的變量都存儲在棧中秘遏,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后丘薛,其對應(yīng)的棧就會被回收,此時(shí)邦危,在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,420評論 1 14
  • 本文出自 Eddy Wiki 洋侨,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,141評論 0 14
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法倦蚪,內(nèi)部類的語法希坚,繼承相關(guān)的語法,異常的語法陵且,線程的語...
    子非魚_t_閱讀 31,657評論 18 399
  • 活著裁僧,可以很簡單,如果只為活著而活著×钠#活著茬底,又可以很深奧,如果追求活著的意義获洲。----題記 這年頭阱表,都說人命賤,到...
    最美四月天閱讀 1,043評論 11 21