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

