每日六道java新手入門面試題,通往自由的道路
1. 面試第一步,自我介紹。
這個(gè)自我介紹,在整個(gè)面試當(dāng)中可以說是第一步,如果你能把你想說的重點(diǎn)說出來,把面試官帶到你準(zhǔn)備好的技術(shù)點(diǎn)中,可以說,你這次自我介紹成功了!
那么說下自我介紹需要包含什么:基本信息,教育背景、工作經(jīng)歷、項(xiàng)目經(jīng)歷、個(gè)人成長等。
可以說模板基本類似,但是每個(gè)的技術(shù)點(diǎn)、工作經(jīng)歷、項(xiàng)目經(jīng)歷都大不相同。所以在自己把握的點(diǎn)當(dāng)中突出出來,抓住面試官的眼球。
模板:
例如:面試官您好,我叫xxx,18年畢業(yè)xx學(xué)校本科xx專業(yè),畢業(yè)至今已有x年工作經(jīng)驗(yàn),在從事Java開發(fā)期間任職于x家公司。
第一家公司是xxx,這家公司是做xxx的,在java這一塊我主要負(fù)責(zé)/參與的是xxx項(xiàng)目,在這個(gè)項(xiàng)目中主要負(fù)責(zé)xxx功能模塊。在這家公司我收獲成長最大的是xxx(技術(shù)和做事方面闡述),之所以離開這家公司是因?yàn)閤xx(離職原因可以不說,就闡述下具體干了些什么)。
第二家公司也就是我上一任公司xxx,這家公司是做xxx,我在這家公司主要負(fù)責(zé)的是xxx,我在這家公司的收獲是xxx,離開這家公司是因?yàn)閤xx(離職原因可以不說,就闡述下具體干了些什么)。
平時(shí)的話我也會(huì)經(jīng)常去學(xué)習(xí)技術(shù),或者寫一些技術(shù)博客比如我的公眾號(hào)、CSDN博客有太子爺哪吒(也可以加一些自己平時(shí)的愛好,甚至寫的什么博客,什么GitHub地址都行,能讓自己加分就行!)
所以來說,這個(gè)比較廣泛,可以自由發(fā)揮。打好第一步,后面的信息相對(duì)來說比較足點(diǎn)。我個(gè)人面試的話,經(jīng)常特別緊張,但是一旦我自我介紹說好了,面試官問了我在自我介紹中提過的技術(shù)點(diǎn),我個(gè)人就會(huì)相對(duì)自信點(diǎn)。跟面試官也會(huì)聊得比較久,比較開心。其實(shí)面試都是雙向,他在選擇你,你也在選擇他,所以不必?fù)?dān)心,不必過于緊張。把準(zhǔn)備好的說出來就行啦!
2. 請(qǐng)你簡述下對(duì)面向?qū)ο蟮睦斫?,面向?qū)ο蠛兔嫦蜻^程的區(qū)別?
1.個(gè)人理解:
- 軟件開發(fā)思想,先有面向過程,后有面向?qū)ο?。
- 在大型軟件系統(tǒng)中,面向過程的做法不足,從而推出了面向?qū)ο?。
- 都是解決實(shí)際問題的思維方式 。
- 兩者相輔相成,宏觀上面向?qū)ο蟀盐諒?fù)雜事物的關(guān)系;微觀上面向過程去處理。
- 面向過程以實(shí)現(xiàn)功能的函數(shù)開發(fā)為主;面向?qū)ο笠紫瘸橄蟪鲱?、屬性及其方法,然后通過實(shí)例化類、執(zhí)行方法來完成功能 。
- 面向過程是封裝的是功能;面向?qū)ο蠓庋b的是數(shù)據(jù)和功能 。
- 面向?qū)ο缶哂欣^承性和多態(tài)性;面向過程則沒有 。
2.面向?qū)ο?/h3>
- 優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特 性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù) 。
- 缺點(diǎn): 性能比面向過程低。
3.面向過程
- 優(yōu)點(diǎn):性能比面向?qū)ο蟾?,因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開銷比較大,比較消耗 資源;比如單片機(jī)、嵌入式開發(fā)、Linux/Unix 等一般采用面向過程開發(fā),性能是 最重要的因素。
- 缺點(diǎn):沒有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展 。
嗯?講的不錯(cuò)嘛!看來是有相對(duì)應(yīng)的理解在里面??!不錯(cuò)不錯(cuò),我再考你一個(gè)問題。
3. 那你再講下面向?qū)ο蟮奶卣饔心男┓矫?/h2>
面向?qū)ο蟮奶卣饔芯唧w四個(gè)方面:封裝、繼承、抽象、多態(tài)。
- 封裝:封裝把一個(gè)對(duì)象的屬性私有化,同時(shí)提供一些可以被外界訪問的訪問。
- 繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程,提供繼承信息的類叫做父類,得到繼承信息的類叫做子類。通過使用繼承我們能夠非常方便地復(fù)用以前的代碼。
- 抽象:抽象是將一類對(duì)象的共同特征總結(jié)出來構(gòu)造類的過程,包括了數(shù)據(jù)抽象和行為抽象。
- 多態(tài):所謂多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā) 出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中 實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。實(shí)際上就是用同樣的對(duì)象調(diào)用同樣的方法會(huì)做出不同的反應(yīng)事情。
4. 請(qǐng)問:我們是否可以繼承 String類?
不可以,在我們查看String源碼的時(shí)候,可以發(fā)現(xiàn):String類是被final修飾,是不可以被繼承的。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ..... }
而final有什么作用呢?
- 修飾類時(shí):表示著該類不能被繼承。
- 修飾方法時(shí):表示方法不能被重寫。
- 修飾變量時(shí):表示變量不能被一次賦值,不能再修改了。
所以String被final修飾的好處有:安全,高效。 并且在當(dāng)只有字符串不可變的時(shí)候,我們才能實(shí)現(xiàn)字符串常量池,字符串常量池可以為我們緩存字符串,提高程序的運(yùn)行效率。
5. 我再問下final、finally、finalize這三者有什么區(qū)別嗎?
- final:修飾符(關(guān)鍵字)有三種用法:
- 如果一個(gè)類被聲明為 final,意味著它不能再派生出新的子類,即不能被繼承,因此它和 abstract 是反義詞。
- 將變量聲明為 final,可以保證它們?cè)谑褂弥胁槐桓淖?,被聲明?final 的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取不可修改。
- 被聲明為 final 的方法也同樣只能使用,不能在子類中被重寫。
- finally: 通常放在try…catch…處理異常中,代表著程序無論正常執(zhí)行還是發(fā)生異常,這里的代碼都會(huì)執(zhí)行。 一般是把釋放資源的代碼放在finally塊中。
- finalize: 是Object類中定義的方法,Java中允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之 前做必要的清理工作。這個(gè)方法是由垃圾收集器在銷毀對(duì)象時(shí)調(diào)用的。
6. 請(qǐng)講下String和 StringBuilder、StringBuffer之間的區(qū)別?
首先String和 StringBuilder、StringBuffer它們都是可以存儲(chǔ)和操作字符串的。
- String它是使用final關(guān)鍵字字符數(shù)組來保存字符串,所以String對(duì)象是不可變的。
- 而StringBuilder和StringBuffer都是繼承自AbstractStringBuilder類,這其中也是用字符數(shù)組來保 存字符串,但是沒有被final修飾,所以是可變的。
- 但是StringBuilder中的方法沒有synchronized修飾,所以它的效率會(huì)比StringBuffer高。
- 安全方面的話:
- String的對(duì)象是不可變的,所以它是線程安全的。
- StringBuffer因?yàn)閷?duì)方法加了同步鎖,所以也是線程安全,但是StringBuilder沒有加同步鎖,所以 線程不安全的。
- 性能方面的話:
- 每次對(duì)String類型進(jìn)行改變的時(shí)候,都會(huì)生成一個(gè)新的String對(duì)象, 然后將指針指向新的String的對(duì)象。
- StringBuffer和StringBuilder每次修改,會(huì)可以對(duì)對(duì)象本身進(jìn)行操作修改,而不是生成新的對(duì)象并 改成對(duì)象引用。
- 使用場景:
- 如果要操作少量的數(shù)據(jù)用 String 。
- 單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù)用StringBuilder。
- 多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) 用StringBuffer 。
總結(jié)
這篇文章就到這里了,如果這篇文章對(duì)你也有所幫助,希望您能多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)
這篇文章主要介紹了關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng),回滾(Rollback)指的是程序或數(shù)據(jù)處理錯(cuò)誤,將程序或數(shù)據(jù)恢復(fù)到上一次正確狀態(tài)的行為?;貪L包括程序回滾和數(shù)據(jù)回滾等類型,需要的朋友可以參考下2023-05-05Java編程中的性能優(yōu)化如何實(shí)現(xiàn)
這篇文章主要介紹了Java編程中的性能優(yōu)化如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解
這篇文章主要介紹了Java基礎(chǔ)之switch分支結(jié)構(gòu)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很大的幫助,需要的朋友可以參考下2021-05-05Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解
Spring?Cloud?Ribbon?是基于Netflix?Ribbon?實(shí)現(xiàn)的一套客戶端負(fù)載均衡工具,Ribbon客戶端組件提供了一系列的完善的配置,如超時(shí),重試等,這篇文章主要介紹了Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解,需要的朋友可以參考下2023-03-03JavaSE基礎(chǔ)之反射機(jī)制(反射Class)詳解
反射機(jī)制有什么用?通過java語言中的反射機(jī)制可以操作字節(jié)碼文件,可以讀和修改字節(jié)碼文件。所以本文將為大家講講反射機(jī)制的使用,需要的可以參考一下2022-09-09Post請(qǐng)求參數(shù)是數(shù)組或者List時(shí)的請(qǐng)求處理方式
這篇文章主要介紹了Post請(qǐng)求參數(shù)是數(shù)組或者List時(shí)的請(qǐng)求處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Spring Boot項(xiàng)目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11