java多執行緒、集合和IO面試題_02
java多執行緒、集合和IO面試題_02
============================================================================= 邏輯思考題: 1:你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多少個就可以確定你肯定有兩個同一顏色的果凍? 4個 ----------------------------------------------------------------------------- 2:如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩隻提捅形狀上下都不均勻,問你如何才能準確稱出4公升的水? 5-3+5-3 3+3+3-5 ----------------------------------------------------------------------------- 3:有8個顏色,大小一樣的小球,其中的一個質量和比其他的重,給你一個天平,你最少幾次就可以稱出那個重的球。(不要想著自己用手拿) 2次 先分成三份3個、3個、2個, 稱3個、3個, 若重的在其中一份,再分成三份1個、1個、1個; 稱1個、1個,若重的在其中一份,就稱出了。 若重的不在其中,那剩餘的1個就是重的。 若稱的3個相等,說明在2個裡面。 思想:更多可能的利用推理。 ============================================================================= 面試題: 1:請介紹一下自己(2-3分鐘) 姓名、家鄉。 經驗(專案經驗)和能力(自學能力)。 態度:對程式設計有興趣 興趣愛好:可提可不提 ----------------------------------------------------------------------------- 2:你有男/女朋友嗎?你結婚了嗎? 穩定性 精力,加班,出差。 你家庭和睦嗎? ----------------------------------------------------------------------------- 3:你有什麼要問的嗎? 對公司一定要有了解。(太偏僻的公司女同學就不要去了) 公司的前景、業務方向。 談錢不傷感情。(心裡有個底線6000,開口7000) ============================================================================= 面試題: 多執行緒: 1:多執行緒有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 兩種。 繼承Thread類 實現Runnable介面 兩種。 同步程式碼塊 同步方法(靜態同步方法) ----------------------------------------------------------------------------- 2:啟動一個執行緒是用run()還是start()? start(); run():封裝了被執行緒執行的程式碼,直接呼叫僅僅是普通方法的呼叫。 start():啟動執行緒,並由JVM自動呼叫run()方法。 ----------------------------------------------------------------------------- 3:sleep() 和 wait() 有什麼區別? sleep():必須指定時間,不釋放鎖。 是Thread類中的一個方法,用於執行緒休眠,休眠時間結束後,該執行緒可以自動喚醒。 wait():可以不指定時間,也可以指定時間,並立即釋放鎖。 是Object類中的一個方法,用於執行緒等待,如果想要喚醒,必須使用notify()或notifyAll()(不能自動喚醒)。 ----------------------------------------------------------------------------- 4:執行緒的基本概念及執行緒的生命週期 執行緒:是程式(程式)的執行單元,執行路徑。 新建-->就緒-->執行-->死亡 新建-->就緒-->執行-->阻塞-->就緒-->執行-->死亡 ----------------------------------------------------------------------------- 集合: 1: HashMap和Hashtable的區別。 歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java1.2引進的Map介面的一個實現。 同步性:Hashtable是執行緒安全的,也就是說是同步的;而HashMap是執行緒序不安全的,不是同步的。 值:只有HashMap可以讓你將空值作為一個表的條目的key或value。
HashMap類和Hashtable類的區別(注意:Hashtable的第二個單詞是小寫,繼承了老版本jdk1.0的命名錯誤,如同System類下的靜態方法Arraycopy()一樣) HashMap類:不同步,執行緒不安全,效率高。允許null鍵和null值。 Hashtable類:同步,執行緒安全,效率低。不允許null鍵和null值。 其實HashMap類就是用來替代Hashtable類的。如同ArrayList類用來替代Vector類一樣。 Hashtable是執行緒安全的,而且名字沒有按照駝峰格式命名。Hashtable雖然是執行緒安全的,但是效率比較低。 HashMap是非執行緒安全的,在多執行緒修改的時候,會出現異常或者是死迴圈。 補充掌握的知識點 java.util.concurrent.ConcurrentHashMap<K,V> ConcurrentHashMap類的特點:Hashtable的執行緒安全 + HashMap的高效能 只針對需要修改的資料進行加鎖(Hashtable執行緒安全的體現) 對其它不需要修改的資料不新增鎖,可以直接獲取(HashMap高效能的體現) 舉例理解: 遊樂場某一項專案需要維護,這個時候只針對需要維護的這個專案加鎖, 而其它無需維護的專案仍然對外開放(即不加鎖),而不是一個專案需要維護就必須關掉整個遊樂場。
----------------------------------------------------------------------------- 2:ArrayList和Vector的區別。 同步性:Vector是執行緒安全的,也就是說是同步的;而ArrayList是執行緒序不安全的,不是同步的。 資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半。 ----------------------------------------------------------------------------- 3:Collection和Collections的區別。 Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。 Collection是個java.util下的介面,它是各種集合結構的父介面,有兩個子介面List和Set。 ----------------------------------------------------------------------------- 4:List、Set、Map是否繼承自Collection介面? List、Set不是繼承自Map介面,它們繼承自Collection介面。 Map介面本身就是一個頂層介面。 ----------------------------------------------------------------------------- 5:說出ArrayList、Vector、LinkedList的儲存效能和特性? ArrayList 底層資料結構是陣列,查詢快,增刪慢。 執行緒不安全,效率高。 Vector 底層資料結構是陣列,查詢快,增刪慢。 執行緒安全,效率低。 LinkedList 底層資料結構是連結串列,查詢慢,增刪快。 執行緒不安全,效率高。 ----------------------------------------------------------------------------- 6:你所知道的集合類都有哪些?主要方法? ArrayList,LinkedList,HashSet,HashMap Collection(介面): add() remove() contains() iterator() size() 遍歷: 增強for 迭代器 |--List get() 遍歷: 普通for |--Set --------------------------------------- Map(介面): put() remove() containskey(),containsValue() keySet() value() get() entrySet() size() 遍歷: 根據鍵找值。 根據鍵值對物件分別找鍵和值。 ----------------------------------------------------------------------------- IO: 1: java中有幾種型別的流?JDK為每種型別的流提供了一些抽象類以供繼承,請說出他們分別是哪些類? 位元組流,字元流。 位元組流繼承於InputStream、OutputStream, 字元流繼承於Reader、Writer。 在java.io包中還有許多其他的流,主要是為了提高效能和使用方便。 ----------------------------------------------------------------------------- 2:什麼是java序列化,如何實現java序列化? 可以把物件寫入文字檔案或者在網路中傳輸。 如何實現序列化呢? 讓被序列化的物件所屬的類實現序列化介面。 該介面是一個標記介面。沒有方法需要實現。 =============================================================================
我的GitHub地址:https://github.com/heizemingjun
我的部落格園地址:http://www.cnblogs.com/chenmingjun
我的螞蟻筆記部落格地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】
相關文章
- java多執行緒面試題Java執行緒面試題
- Java多執行緒面試高配問題---多執行緒(3)🧵Java執行緒面試
- 【Java多執行緒】執行緒安全的集合Java執行緒
- 15個Java多執行緒面試題Java執行緒面試題
- 50個Java多執行緒面試題Java執行緒面試題
- 多執行緒面試題執行緒面試題
- Java常用面試題之Java多執行緒(十三)Java面試題執行緒
- Java 多執行緒面試問題彙總Java執行緒面試
- 多執行緒-多執行緒常見的面試題執行緒面試題
- Java執行緒面試題(02) Java執行緒中如何避免死鎖Java執行緒面試題
- 多執行緒面試題1執行緒面試題
- 【Java面試題】Java面試之多執行緒!Java面試題執行緒
- 史上最全 Java 多執行緒面試題及答案Java執行緒面試題
- 史上最全Java多執行緒面試題,附答案Java執行緒面試題
- 精選30道Java多執行緒面試題Java執行緒面試題
- java 多執行緒 併發 面試Java執行緒面試
- java多執行緒執行問題Java執行緒
- 敲開阿里大門的執行緒、多執行緒和執行緒池面試專題阿里執行緒面試
- Linux多執行緒面試題Linux執行緒面試題
- 多執行緒經典面試題執行緒面試題
- Java多執行緒與併發基礎面試題Java執行緒面試題
- 史上最全1000道Java高頻面試題:IO流,集合、演算法、網路、多執行緒、Git、設計模式Java面試題演算法執行緒Git設計模式
- java多執行緒問題 多核cpu遇上java多執行緒,求解釋Java執行緒
- Java執行緒面試題 Top 50Java執行緒面試題
- Java多執行緒——執行緒Java執行緒
- 面試系列-40個Java多執行緒問題總結面試Java執行緒
- 15個頂級Java多執行緒面試題及回答Java執行緒面試題
- 15個頂級Java多執行緒面試題及答案Java執行緒面試題
- #大學#Java多執行緒學習02(執行緒同步)Java執行緒
- Java多執行緒和併發問題集Java執行緒
- JAVA多執行緒和併發基礎面試問答Java執行緒面試
- 多執行緒和多執行緒同步執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 最全java多執行緒總結3——瞭解阻塞佇列和執行緒安全集合不Java執行緒佇列
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- bat等大公司常考java多執行緒面試題BATJava執行緒面試題
- Java程式設計師面試中的多執行緒問題Java程式設計師面試執行緒