(轉)喜馬拉雅2018 Java面試題目

背景:將網上的題目整理下。html

java基礎

1:hashTable hashMap ConcurrentHashMap 的區別、數據結構、線程安全java

 

2:equals和==區別, 重寫equals必定要重寫hashcode方法嗎?爲何?hashcode方法有什麼做用?mysql

    這個萬年不變的面試題,這是何等的臥槽   git

     ==說明:github

     對於基本類型來講 ,==比較兩個基本類型的值是否相等,面試

     對於引用類型來講,==比較的是內個引用類型的內存地址redis

     equals說明:算法

     equals用來比較的是兩個對象的內容是否相等,因爲全部的類都是繼承自java.lang.Object類的,因此適用於全部對象,若是沒有對該方法       進行覆蓋的話,調用的仍然是Object類中的方法,而Object中的equals方法返回的倒是==的判斷。sql

     

     重寫equals通常是要重寫hashcode方法的,首先equals與hashcode間的關係是這樣的:編程

     一、若是兩個對象相同(即用equals比較返回true),那麼它們的hashCode值必定要相同;

     二、若是兩個對象的hashCode相同,它們並不必定相同(即用equals比較返回false)   

     好比說兩個字符串的hashcode相同,可是這兩個字符串能夠是不一樣的字符串,對象也是同理,本身理解的。

     至於hashcode有什麼用?

     爲了提升程序的效率才實現了hashcode方法,先進行hashcode的比較,若是不一樣,那沒就沒必要在進行equals的比較了,這樣就大大減小         了equals比較的次數,這對比須要比較的數量很大的效率提升是很明顯的,一個很好的例子就是在集合中的使用;
(轉)從一道面試題完全搞懂hashCode與equals的做用與區別及應當注意的細節

3:線程池的工做機制,Java經過Executors工具類建立出來的線程池有什麼區別,爲何這樣定義?

Executors.newCachedThreadPool();        //建立一個緩衝池,緩衝池容量大小爲Integer.MAX_VALUE
Executors.newSingleThreadExecutor();   //建立容量爲1的緩衝池
Executors.newFixedThreadPool(int);    //建立固定容量大小的緩衝池

 

(轉)Java併發編程:線程池的使用

4:線程池有哪些參數,具體含義是什麼?

共7個參數

corePoolSize 核心線程數,

maximumPoolSize線程池最大線程數, 

RejectedExecutionHandler飽和策略:DiscardPolicy,DiscardOldPolicy,CallerRunPolicy,AbortPolicy

keepAliveTime存活時間,

TimeUnit(線程活動保持時間的單位)

workQueue阻塞隊列 ArrayBlockingQueue和PriorityBlockingQueue使用較少,通常使用LinkedBlockingQueue和Synchronous

threadFactory線程工廠,用來建立線程

(轉)Java併發編程:線程池的使用


4:AQS 重入鎖 讀寫鎖 countdownlatch 柵欄(cyclicBarrier) 信號量(semaphore)


5:有四個線程A、B、C、D、E,如今須要E線程在ABCD四個線程結束以後再執行

控制線程順序執行 我知道的 

1. join 讓主線程等待子線程運行結束後再繼續運行

2. 利用併發包裏的Excutors的newSingleThreadExecutor產生一個單線程的線程池,而這個線程池的底層原理就是一個先進先出(FIFO)的  隊列。代碼中executor.submit依次添加了123線程,按照FIFO的特性,執行順序也就是123的執行結果,從而保證了執行順序。

3. 使用 CountDownLatch 控制多個線程執行順序 cutDown()方法和await()方法  參考:https://www.cnblogs.com/flyme/p/4568063.html


6:Java序列化,有ID和沒ID會出現問題嗎?

(轉)java 序列化ID的做用
7:JVM內存模型,爲何survivor須要有2個。

survivor須要2個,主要是爲了規避內存碎片化

8:GC算法,回收器
9:類加載機制

加載(內存中生成class對象), 連接(驗證 準備 解析), 初始化

ps:解析階段在某些狀況下能夠在初始化階段以後再開始,這是爲了支持Java的運行時綁定。

VM——Java類加載機制總結

10. synchronized和lock的區別

synchronized和lock的區別


11 手寫生產者消費者

https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20%E5%B9%B6%E5%8F%91.md

BlockingQueue實現。semaphore,wait/notify,await/signal

mysql
1:索引都有什麼類型
2:彙集索引和非彙集索引,主鍵刪掉以後還有彙集索引嗎?
3:建了索引,何時會不命中索引
4:innodb與myisam存儲引擎的區別
5:分庫分表,主從複製的延遲
6:查詢優化,

redis
淘汰機制
失效策略
持久化rdb、aof
pipeline
主從、集羣

數據結構
1:鏈表,鏈表倒置、節點交換
2:Btree B+tree 紅黑樹

協議
tcp
http

 

 

 

喜馬拉雅2018 Java面試題目

相關文章
相關標籤/搜索