建議反復(fù)觀看宅静!精選高頻java面試題20道章蚣,助你跳槽加薪!

面向?qū)ο蟮奶卣饔心男┓矫妫?/h1>

① 抽象:抽象分為數(shù)據(jù)抽象和過程抽象兩方面坏为。
數(shù)據(jù)抽象:針對對象的屬性究驴,比如建立一個鳥這樣的類,鳥會有以下特征匀伏,兩個翅膀,兩支腳蝴韭,有羽毛等等特性够颠,寫成類都是鳥的屬性
過程抽象:針對對象的行為特征,比如鳥會飛榄鉴,會跳等等履磨,這些方面的就會抽象為方法,即過程庆尘,寫成類都是鳥的方法
② 繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程
③ 封裝:封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來剃诅,對數(shù)據(jù)的訪問只能通過已定義的接口。
④ 多態(tài):多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力(方法的重寫)


訪問修飾符public,private,protected(不寫修飾符默認(rèn)只能同一包下訪問)

基本數(shù)據(jù)類型

  • 字符類型:byte驶忌,char
  • 基本整型:short矛辕,int笑跛,long
  • 浮點(diǎn)型:float,double
  • 布爾類型:boolean
    ps: String不是基本數(shù)據(jù)類型聊品,是final修飾的java類

精度丟失問題(如何判定單雙精度)

  • float: float f = 3.4是否正確
    不正確飞蹂。3.4是雙精度,將雙精度型(double)賦值給單精度型(float)屬于下轉(zhuǎn)型(down-casting翻屈,也稱為窄化)會造成精度損失陈哑,因此需要強(qiáng)制類型轉(zhuǎn)換float f =(float)3.4; 或者寫成float f =3.4F。
  • double: 為了防止double精度丟失問題伸眶,可以使用java.math包中提供的API類BigDecimal用來對超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算惊窖。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù)。
double a = 1;
double b = 20.2;
double c = 300.02;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal c1 = new BigDecimal(Double.toString(c));
double result = (a1.add(b1).add(c1)).doubleValue();
System.out.println(result);

int和Integer有什么區(qū)別

Java是一個近乎純潔的面向?qū)ο缶幊陶Z言厘贼,但是為了編程的方便還是引入了基本數(shù)據(jù)類型爬坑,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類型當(dāng)成對象操作,Java為每一個基本數(shù)據(jù)類型都引入了對應(yīng)的包裝類型(wrapper class)涂臣,int的包裝類就是Integer盾计,從Java 5開始引入了自動裝箱/拆箱機(jī)制,使得二者可以相互轉(zhuǎn)換赁遗。

class AutoUnboxingTest {

    public static void main(String[] args) {
        Integer a = new Integer(3);
        Integer b = 3;                  // 將3自動裝箱成Integer類型
        int c = 3;
        System.out.println(a == b);     // false 兩個引用沒有引用同一對象
        System.out.println(a == c);     // true a自動拆箱成int類型再和c比較
    }
}

| 和 ||署辉,& 和 && 的區(qū)別

  • || 和 && 定義為邏輯運(yùn)算符,而 | 和 & 定義為位運(yùn)算符
  • && 如果兩個操作數(shù)都非零岩四,則條件為真哭尝;
  • || 如果兩個操作數(shù)中有任意一個非零,則條件為真剖煌。
  • & 按位與操作材鹦,按二進(jìn)制位進(jìn)行"與"運(yùn)算。運(yùn)算規(guī)則:(有 0 則為 0)
0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;

| 按位或運(yùn)算符耕姊,按二進(jìn)制位進(jìn)行"或"運(yùn)算桶唐。運(yùn)算規(guī)則:(有 1 則為 1)

0|0=0;    
0|1=1;   
1|0=1;    
1|1=1;

解釋內(nèi)存中的棧(stack)、堆(heap)茉兰。

  • 通常我們定義一個基本數(shù)據(jù)類型的變量尤泽,一個對象的引用,函數(shù)調(diào)用的現(xiàn)場都是保存在JVM中的椆媪常空間坯约。棧空間操作起來最快但是棧很小莫鸭,通常大量的對象都是放在堆空間闹丐,棧和堆的大小都可以通過JVM的啟動參數(shù)來進(jìn)行調(diào)整,棻灰颍空間用光了會引發(fā)StackOverflowError
  • 而通過new關(guān)鍵字和構(gòu)造器創(chuàng)建的對象則放在堆空間卿拴,堆是垃圾收集器管理的主要區(qū)域衫仑,由于現(xiàn)在的垃圾收集器都采用分代收集算法,所以堆空間還可以細(xì)分為新生代和老生代巍棱,再具體一點(diǎn)可以分為Eden惑畴、Survivor(又可分為From Survivor和To Survivor),堆和常量池空間不足則會引發(fā)OutOfMemoryError

Math.round(11.5) 等于多少航徙?Math.round(-11.5)等于多少如贷?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11到踏。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整杠袱。

數(shù)組有沒有l(wèi)ength()方法?String有沒有l(wèi)ength()方法窝稿?

數(shù)組沒有l(wèi)ength()方法楣富,有l(wèi)ength 的屬性。String 有l(wèi)ength()方法伴榔。JavaScript中纹蝴,獲得字符串的長度是通過length屬性得到的,這一點(diǎn)容易和Java混淆踪少。

在JAVA中如何跳出當(dāng)前的多重嵌套循環(huán)

// 使用標(biāo)記
public static void main(String[] args) {
        System.out.println("標(biāo)記前");
        ok: for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (j == 5)
                    break ok;
            }
        }
        System.out.println("標(biāo)記后");
    }

是否可以繼承String類塘安?

∵ String = final類 && final類 ≠ 繼承(不能被繼承)
∴ String ≠ 繼承(不能被繼承)

String、StringBuffer援奢、StringBuilder區(qū)別(詳細(xì)介紹)

  • StringBuffer兼犯、StringBuilder和String一樣,也用來代表字符串集漾。
  • String類是不可變類切黔,任何對String的改變都 會引發(fā)新的String對象的生成。
  • StringBuffer是可變類具篇,任何對它所指代的字符串的改變都不會產(chǎn)生新的對象纬霞。StringBufferd支持并發(fā)操作,線性安全的栽连,適 合多線程中使用
  • StringBuilder不支持并發(fā)操作险领,線性不安全的,不適合多線程中使用秒紧。新引入的StringBuilder類不是線程安全的,但其在單線程中的性能比StringBuffer高

方法重載(Overload)和方法重寫(Override)

  • 方法重載:同一個類中的多個方法有相同的名字挨下,但這些方法的參數(shù)列表不同熔恢,參數(shù)的數(shù)量或參數(shù)類型不能完全相同。
  • 方法重寫:存在子父類之間的,臭笆,子類定義的方法與父類中的方法具有相同的方法名字叙淌,以及相同的參數(shù)表和相同的返回類型秤掌。
    ps:函數(shù)的返回值只是作為函數(shù)運(yùn)行之后的一個“狀態(tài)” ,并不能作為某個方法的“標(biāo)識” 鹰霍。

Java中接口(interface)和抽象類(abstract)的區(qū)別

  • interface:關(guān)鍵字是interface闻鉴,用來被類實(shí)現(xiàn),可以多繼承(Java類只能單繼承)其他接口茂洒,內(nèi)部都是抽象方法孟岛,所以被Java類實(shí)現(xiàn)(implement)的時候就要實(shí)現(xiàn)內(nèi)部所有的方法,內(nèi)部的變量隱式的被public static final 修飾督勺,方法則是被public abstract 修飾(而且方法只能是public權(quán)限)渠羞。
  • abstract:關(guān)鍵字是abstract,用來被類繼承智哀,只能單繼承其他類次询,內(nèi)部既可以有抽象方法,也可以有普通方法瓷叫,被Java類繼承(extend)的時候必須實(shí)現(xiàn)內(nèi)部的抽象方法屯吊,內(nèi)部的抽象方法被abstract修飾,如果子類沒有將抽象類全部實(shí)現(xiàn)摹菠,那么子類也要加abstract關(guān)鍵字盒卸。

Java 中會存在內(nèi)存泄漏嗎,請簡單描述辨嗽。

理論上Java因?yàn)橛欣厥諜C(jī)制(GC)不會存在內(nèi)存泄露問題(這也是Java被廣泛使用于服務(wù)器端編程的一個重要原因)世落;然而在實(shí)際開發(fā)中,可能會存在無用但可達(dá)的對象糟需,這些對象不能被GC回收屉佳,因此也會導(dǎo)致內(nèi)存泄露的發(fā)生。例如Hibernate的Session(一級緩存)中的對象屬于持久態(tài)洲押,垃圾回收器是不會回收這些對象的武花,然而這些對象中可能存在無用的垃圾對象,如果不及時關(guān)閉(close)或清空(flush)一級緩存就可能導(dǎo)致內(nèi)存泄露

String s = new String(“ds”);創(chuàng)建了幾個字符串對象杈帐?

兩個對象体箕,一個是靜態(tài)區(qū)的"ds",一個是用new創(chuàng)建在堆上的對象

Java 中的final關(guān)鍵字有哪些用法挑童?

  • 修飾類:表示該類不能被繼承
  • 修飾方法:表示方法不能被重寫
  • 修飾變量:表示變量只能一次賦值以后值不能被修改(常量)

數(shù)據(jù)類型之間的轉(zhuǎn)換

如何將字符串轉(zhuǎn)換為基本數(shù)據(jù)類型
調(diào)用基本數(shù)據(jù)類型對應(yīng)的包裝類中的方法parseXXX(String)或valueOf(String)即可返回相應(yīng)基本類型
如何將基本數(shù)據(jù)類型轉(zhuǎn)換為字符串
一種方法是將基本數(shù)據(jù)類型與空字符串("")連接(+)即可獲得其所對應(yīng)的字符串;
另一種方法是調(diào)用String 類中的valueOf()方法返回相應(yīng)字符串

列出一些你常見的運(yùn)行時異常

  • ArithmeticException(算術(shù)異常)
  • ClassCastException (類轉(zhuǎn)換異常)
  • IllegalArgumentException (非法參數(shù)異常)
  • IndexOutOfBoundsException (下標(biāo)越界異常)
  • NullPointerException (空指針異常)
  • SecurityException (安全異常)

java 集合(list累铅、set、map)的特點(diǎn)

List站叼、Set是存儲單列的數(shù)據(jù)集合,都繼承與Collection接口娃兽。 Map是存儲鍵值對這樣的雙列數(shù)據(jù)的集合,是個獨(dú)立接口

List:有順序以線性方式存儲,可以存放重復(fù)對象 (線程安全方法:List list = Collections.synchronizedList(new LinkedList(…));)

  • LinkedList:雙向鏈表實(shí)現(xiàn)存儲,索引數(shù)據(jù)慢插入數(shù)度較快尽楔,線程不安全(比安全性能好)
  • ArrayList: 數(shù)組方式存儲數(shù)據(jù)投储,索引數(shù)據(jù)快插入數(shù)據(jù)慢第练,線程不安全
  • Vector: 數(shù)組方式存儲數(shù)據(jù),索引數(shù)據(jù)快插入數(shù)據(jù)慢玛荞,線程安全
  • Stack:繼承自Vector娇掏,實(shí)現(xiàn)一個后進(jìn)先出的堆棧(可以理解彈夾裝彈,后裝的先打出)

Set:無順序,不包含重復(fù)的元素

  • HashSet:為快速查找設(shè)計的Set勋眯。存入HashSet的對象必須定義hashCode()
  • TreeSet: 保存次序的Set, 底層為樹結(jié)構(gòu)婴梧。使用它可以從Set中提取有序的序列
  • LinkedHashSet: 具有HashSet的查詢速度,且內(nèi)部使用鏈表維護(hù)元素的順序(插入的次序)凡恍。于是在使用迭代器遍歷Set時志秃,結(jié)果會按元素插入的次序顯示

Map:鍵必須是唯一 (同步方法:Map m = Collections.synchronizedMap(new TreeMap(…));)

  • Hashtable: 基于散列表的實(shí)現(xiàn),允許空鍵空值嚼酝,線程安全
  • HashMap: 基于散列表的實(shí)現(xiàn)浮还,允許空鍵空值,線程不安全(與Hashtable基本一致)
  • TreeMap: 基于紅黑樹數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)闽巩,不允許空鍵空值钧舌,線程不安全
  • WeakHashMap: 改進(jìn)的HashMap,它對key實(shí)行“弱引用”涎跨,如果一個key不再被外部所引用洼冻,那么該key可以被GC回收。

總結(jié)

歡迎關(guān)注公眾號:前程有光隅很,領(lǐng)取一線大廠Java面試題總結(jié)+各知識點(diǎn)學(xué)習(xí)思維導(dǎo)+一份300頁pdf文檔的Java核心知識點(diǎn)總結(jié)撞牢! 這些資料的內(nèi)容都是面試時面試官必問的知識點(diǎn),篇章包括了很多知識點(diǎn)叔营,其中包括了有基礎(chǔ)知識屋彪、Java集合、JVM绒尊、多線程并發(fā)畜挥、spring原理、微服務(wù)婴谱、Netty 與RPC 蟹但、Kafka、日記谭羔、設(shè)計模式华糖、Java算法、數(shù)據(jù)庫瘟裸、Zookeeper缅阳、分布式緩存、數(shù)據(jù)結(jié)構(gòu)等等景描。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末十办,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子超棺,更是在濱河造成了極大的恐慌向族,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棠绘,死亡現(xiàn)場離奇詭異件相,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氧苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門夜矗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人让虐,你說我怎么就攤上這事紊撕。” “怎么了赡突?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵对扶,是天一觀的道長。 經(jīng)常有香客問我惭缰,道長浪南,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任漱受,我火速辦了婚禮络凿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昂羡。我一直安慰自己絮记,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布紧憾。 她就那樣靜靜地躺著到千,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赴穗。 梳的紋絲不亂的頭發(fā)上憔四,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音般眉,去河邊找鬼了赵。 笑死,一個胖子當(dāng)著我的面吹牛甸赃,可吹牛的內(nèi)容都是我干的柿汛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼络断!你這毒婦竟也來了裁替?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤貌笨,失蹤者是張志新(化名)和其女友劉穎弱判,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锥惋,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昌腰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膀跌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遭商。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捅伤,靈堂內(nèi)的尸體忽然破棺而出劫流,到底是詐尸還是另有隱情,我是刑警寧澤暑认,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布困介,位于F島的核電站,受9級特大地震影響蘸际,放射性物質(zhì)發(fā)生泄漏座哩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一粮彤、第九天 我趴在偏房一處隱蔽的房頂上張望根穷。 院中可真熱鬧,春花似錦导坟、人聲如沸屿良。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尘惧。三九已至,卻和暖如春递递,著一層夾襖步出監(jiān)牢的瞬間喷橙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工登舞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贰逾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓菠秒,卻偏偏與公主長得像疙剑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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