大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年互聯網Java常見面試題

2020年互聯網Java常見面試題

更新時間:2020-03-20 09:57:38 來源:動力節點 瀏覽2825次


  談談Java反射機制,動態代理是基于什么原理


  反射機制是Java語言提供的一種基礎功能,賦予程序在運行時自省(introspect,官方用語)的能力。通過反射我們可以直接操作類或者對象,比如獲取某個對象的類定義,獲取類聲明的屬性和方法,調用方法或者構造對象,甚至可以運行時修改類定義。


  動態代理是一種方便運行時動態構建代理、動態處理代理方法調用的機制,很多場景都是利用類似機制做到的,比如用來包裝RPC調用、面向切面的編程(AOP)。


  JDK動態代理:基于Java反射機制實現,必須要實現了接口的業務類才能用這種辦法生成代理對象。新版本也開始結合ASM機制。


  cglib動態代理:基于ASM機制實現,通過生成業務類的子類作為代理類。


  int和Integer有什么區別?談談Integer的值緩存范圍。


  int是我們常說的整形數字,是Java的8個原始數據類型(PrimitiveTypes,boolean、byte、short、char、int、foat、double、long)之一。Java語言雖然號稱一切都是對象,但原始數據類型是例外。


  Integer是int對應的包裝類,它有一個int類型的字段存儲數據,并且提供了基本操作,比如數學運算、int和字符串之間轉換等。在Java5中,引入了自動裝箱和自動拆箱功能(boxing/unboxing),Java可以根據上下文,自動進行轉換,極大地簡化了相關編程。


  Integer的值默認緩存是-128到127之間。緩存上限值實際是可以根據需要調整的,JVM提供了參數設置:-XX:AutoBoxCacheMax=N。


  不管是Integer還Boolean等,都被聲明為“privatefnal”,所以,它們同樣是不可變類型!


  對比Vector、ArrayList、LinkedList有何區別?


  Vector是線程安全的動態數組,。Vector內部是使用對象數組來保存數據,可以根據需要自動增加容量,當數組已滿時,會創建新的數組,并拷貝原有數組數據。Vector在擴容時會提高1倍


  ArrayList是動態數組實現,不是線程安全的,性能要好很多。與Vector近似,ArrayList也是可以根據需要調整容量,不過兩者的調整邏輯有所區別。ArrayList擴容時是增加50%。


  Vector和ArrayList作為動態數組,其內部元素以數組形式順序存儲的,所以非常適合隨機訪問的場合。除了尾部插入和刪除元素,往往性能會相對較差,比如我們在中間位置插入一個元素,需要移動后續所有元素。


  LinkedList是Java提供的雙向鏈表,它不需要像上面兩種那樣調整容量,也不是線程安全的。LinkedList進行節點插入、刪除卻要高效得多,但是隨機訪問性能則要比動態數組慢。


  TreeSet支持自然順序訪問,但是添加、刪除、包含等操作要相對低效(log(n)時間)。


  HashSet則是利用哈希算法,理想情況下,如果哈希散列正常,可以提供常數時間的添加、刪除、包含等操作,但是它不保證有序。


  LinkedHashSet,內部構建了一個記錄插入順序的雙向鏈表,因此提供了按照插入順序遍歷的能力,與此同時,也保證了常數時間的添加、刪除、包含等操作,這些操作性能略低于HashSet,因為需要維護鏈表的開銷。


  在遍歷元素時,HashSet性能受自身容量影響,所以初始化時,除非有必要,不然不要將其背后的HashMap容量設置過大。而對于LinkedHashSet,由于其內部鏈表提供的方便,遍歷性能只和元素多少有關系。


  Java提供的默認排序算法:


  對于原始數據類型,目前使用的是所謂雙軸快速排序,是一種改進的快速排序算法,早期版本是相對傳統的快速排序


  對于對象數據類型,目前則是使用TimSort,思想上也是一種歸并和二分插入排序結合的優化排序算法


  對比Hashtable、HashMap、TreeMap有什么不同?


  元素特性:HashTable中的key、value都不能為null;HashMap中的key、value可以為null,很顯然只能有一個key為null的鍵值對,但是允許有多個值為null的鍵值對;TreeMap中當未實現Comparator接口時,key不可以為null;當實現Comparator接口時,若未對null情況進行判斷,則key不可以為null,反之亦然。


  順序特性:HashTable、HashMap具有無序特性。TreeMap是利用紅黑樹來實現的(樹中的每個節點的值,都會大于或等于它的左子樹種的所有節點的值,并且小于或等于它的右子樹中的所有節點的值),實現了SortMap接口,能夠對保存的記錄根據鍵進行排序。所以一般需要排序的情況下是選擇TreeMap來進行,默認為升序排序方式(深度優先搜索),可自定義實現Comparator接口實現排序方式。


  初始化與增長方式:初始化時:HashTable在不指定容量的情況下的默認容量為11,且不要求底層數組的容量一定要為2的整數次冪;HashMap默認容量為16,且要求容量一定為2的整數次冪。擴容時:Hashtable將容量變為原來的2倍加1;HashMap擴容將容量變為原來的2倍。


  HashMap基于哈希思想,實現對數據的讀寫。當我們將鍵值對傳遞給put()方法時,它調用鍵對象的hashCode()方法來計算hashcode,然后找到bucket位置來儲存值對象。當獲取對象時,通過鍵對象的equals()方法找到正確的鍵值對,然后返回值對象。HashMap使用鏈表來解決碰撞問題,當發生碰撞了,對象將會儲存在鏈表的下一個節點中。HashMap在每個鏈表節點中儲存鍵值對對象。當兩個不同的鍵對象的hashcode相同時,它們會儲存在同一個bucket位置的鏈表中,可通過鍵對象的equals()方法用來找到鍵值對。如果鏈表大小超過閾值(8),鏈表就會被改造為樹形結構(紅黑樹)。


  解決哈希沖突有哪些典型方法呢?


  開放定址法:當關鍵字key的哈希地址p=H(key)出現沖突時,以p為基礎,產生另一個哈希地址p1,如果p1仍然沖突,再以p為基礎,產生另一個哈希地址p2,…,直到找出一個不沖突的哈希地址pi,將相應元素存入其中。


  再哈希法:當哈希地址Hi=RH1(key)發生沖突時,再計算Hi=RH2(key)……,直到沖突不再產生。這種方法不易產生聚集,但增加了計算時間。


  鏈地址法:這種方法的基本思想是將所有哈希地址為i的元素構成一個稱為同義詞鏈的單鏈表,并將單鏈表的頭指針存在哈希表的第i個單元中,因而查找、插入和刪除主要在同義詞鏈中進行。鏈地址法適用于經常進行插入和刪除的情況。


  Java提供了哪些IO方式?NIO如何實現多路復用?


  傳統的java.io包,它基于流模型實現,提供了我們最熟知的一些IO功能,比如File抽象、輸入輸出流等。交互方式是同步、阻塞的方式。


  很多時候,人們也把java.net下面提供的部分網絡API,比如Socket、ServerSocket、HttpURLConnection也歸類到同步阻塞IO類庫,因為網絡通信同樣是IO行為。


  在Java1.4中引入了NIO框架(java.nio包),提供了Channel、Selector、Bufer等新的抽象,可以構建多路復用的、同步非阻塞IO程序,同時提供了更接近操作系統底層的高性能數據操作方式。


  在Java7中,NIO有了進一步的改進,也就是NIO2,引入了異步非阻塞IO方式,也有很多人叫它AIO(AsynchronousIO)。異步IO操作基于事件和回調機制,可以簡單理解為,應用操作直接返回,而不會阻塞在那里,當后臺處理完成,操作系統會通知相應線程進行后續工作。


  NIO多路復用的局限性是什么呢?


  由于nio實際上是同步非阻塞io,是一個線程在同步的進行事件處理,當一組事channel處理完畢以后,去檢查有沒有又可以處理的channel。這也就是同步+非阻塞。同步,指每個準備好的channel處理是依次進行的,非阻塞,是指線程不會傻傻的等待讀。只有當channel準備好后,才會進行。那么就會有這樣一個問題,當每個channel所進行的都是耗時操作時,由于是同步操作,就會積壓很多channel任務,從而完成影響。那么就需要對nio進行類似負載均衡的操作,如用線程池去進行管理讀寫,將channel分給其他的線程去執行,這樣既充分利用了每一個線程,又不至于都堆積在一個線程中,等待執行


2020年互聯網Java常見面試題


    以上就是動力節點Java培訓機構小編介紹的“2020年互聯網Java常見面試題”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 毛片免费永久不卡视频观看 | 欧洲做视频在线观看 | 国产精品人成福利视频 | 免费超爽大片黄网站 | 狠狠做狠狠做综合日日 | 欧美一级黄色片在线观看 | 国产高清福利91成人 | 毛片大片免费看 | 国产福利精品在线观看 | 国内精品福利在线视频 | 色八戒国产一区二区三区四区 | 国产成人亚综合91精品首页 | 国产一区二区三区久久精品 | 久热热热| 国产精品久久久久蜜芽 | 亚洲国产精品一区二区不卡 | 色资源网站| 老年人一级特黄aa大片 | 五月天 亚洲 | 伊人天伊人天天网综合视频 | 国产视频福利在线 | 黄色一级毛片在线观看 | 日本高清在线一区二区三区 | 青青草99热这里都是精品 | 日本色色网| 国产亚洲精品久久久久久久软件 | 有啥免费毛片呢 | 久久久久一 | 99re在线 | 国产精品国产三级国产an | 日本爱情动作片网址 | 欧美日韩亚洲国产综合 | 香蕉视频免费在线 | 91精品国产综合久久欧美 | 久久国产精品成人免费 | 5252色欧美在线男人的天堂 | 亚洲欧洲精品视频 | 米奇精品一区二区三区在线观看 | 国产成人一区二区三区精品久久 | 欧美亚洲日本国产综合网 | 中文字幕在线精品视频入口一区 |