面試-基礎篇

前言

上一篇文章我們完成了簡歷的編寫,接下來就該進行技術了,技術這塊主要會圍繞如下幾個方面。

1、java基礎

  • 集合框架
    • list與set的區(qū)別
    • ArrayList、LinkedList、Vector的區(qū)別
    • Map、Set、List、Queue、Stack的特點與用法
    • map在for循環(huán)狀態(tài)下使用remove()為何會拋出異常
    • set與list的區(qū)別
      結合使用場景去描述
    • 線程安全的集合類以及優(yōu)化,cow模式
    • hashmap的實現(xiàn)
      此處需要深入了解源碼,及hashmap多線程環(huán)境下會出現(xiàn)什么問題,這個幾乎是必問,結合jdk1.7與jdk1.8的區(qū)別
    • hashtable與concurrenthashmap
      concurrenthashmap結合源碼,jdk1.7與1.8的區(qū)別
    • 線程安全的各種集合類,cow模式等
  • final關鍵字,finally關鍵字
  • 異常的分類及處理,結合aop
  • 面向對象的五大職責
    結合項目或者某些源碼進行描述
  • classloader的加載機制
  • 重寫equals時為何要重寫hashcode(),不重寫會出現(xiàn)什么問題
  • java基礎類型的向上轉型,丟失精度問題
  • String類為何是不可變的,string的equals方法是如何實現(xiàn)的?
  • 接口與抽象類的區(qū)別,為何要這樣設計?
  • 重載與重寫
  • IO的優(yōu)化,NIO
  • Object有哪些通用方法?
  • String、StringBuffer與StringBuilder的區(qū)別
  • 一致性hash
  • Java對象的生命周期

2、多線程與并發(fā)

  • wait()和notify()
  • 多線程環(huán)境下讓3個線程依次按順序執(zhí)行,如何實現(xiàn)?
  • 創(chuàng)建線程的幾種方式,應用場景?
    繼承thread類,實現(xiàn)runnable或者callable接口
  • 線程和進程有什么區(qū)別?
  • 用 wait-notify 寫一段代碼來解決生產(chǎn)者-消費者問題?
  • 用java寫一個線程安全的單例模式
    double check和枚舉類型兩種方式,延伸會問為何要double-check,枚舉為何是線程安全的
  • notify()與notifyAll()有什么區(qū)別?
  • 如何獲得線程的堆棧信息?
  • 線上服務器cpu 100%了,該如何排查問題?
  • i++ 操作在多線程環(huán)境下會出現(xiàn)什么問題?怎么解決?
    考慮使用AtomicInteger等相關的類
  • fork-join框架是什么?
  • 可重入鎖是什么,有哪些?
  • 同步方法與同步代碼塊,有何區(qū)別,使用場景?
  • 同步代碼塊中拋出異常會發(fā)生什么?
  • volatile 變量和 atomic 變量有什么不同?
  • ReentrantLock與synchronized
  • 啟動線程的方法是哪個?
  • 同步類容器和并發(fā)類容器有何區(qū)別,使用場景分別是?
  • CyclicBarrier 和 CountDownLatch 有什么不同?
  • java內存模型
  • 線程優(yōu)化的方案
    可以參考cow模式,以及concurrenthashmap的優(yōu)化鎖力度等方面入手
  • volatile與synchronized
  • ThreadLocal線程局部變量
  • 多線程的設計模式
    Future-task,master-worker,Guarded Suspension,生產(chǎn)者消費者等
  • 設計一個高并發(fā)的系統(tǒng),需要考慮哪些點?
  • 什么是線程池,你在項目中使用過哪些?
    線程池的幾種方式要記清楚,底層使用的都是同一個構造方法,要清楚的知道每個參數(shù)的含義,線程池大小的優(yōu)化,從io密集型和計算密集型方面去回答
  • 線程池中任務滿了,會怎么處理?
  • 什么是阻塞式方法,自己去設計一個該怎么實現(xiàn)?
  • CountDownLatch
  • 隊列(有界和無界)如何實現(xiàn)?

數(shù)據(jù)結構與算法

  • 兩個有序的數(shù)組合并成一個數(shù)組,寫代碼實現(xiàn)?
給兩個數(shù)組分別定義一個下標,最大長度是數(shù)組長度減一,按位循環(huán)比較兩個數(shù)組,較小元素的
放入新數(shù)組,下標加一(注意,較大元素對應的下標不加一),直到某一個下標超過數(shù)組長度時
退出循環(huán),此時較短數(shù)組已經(jīng)全部放入新數(shù)組,較長數(shù)組還有部分剩余,最后將剩下的部分元素
放入新數(shù)組,大功告成。
  • 反轉一個鏈表
  • 斐波那契數(shù)列
兩種方式實現(xiàn),遞歸和非遞歸
  • 樹相關的數(shù)據(jù)結構
此處會問二叉樹,排序樹,avl樹,紅黑樹,B樹,B+樹等相關的應用場景
  • 各種排序算法需要簡單了解下
冒泡,快速排序,堆排序,二分法等等相關的都需要了解下
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Java SE 基礎: 封裝、繼承、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務)結合為一個獨立的整體,并盡...
    Jayden_Cao閱讀 2,130評論 0 8
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,341評論 11 349
  • 廈門,這個美麗的城市,從我兒時的記憶里一直盤旋蜿蜒到真實的接觸。對於他,真的是喜歡到心裡去,就算現(xiàn)在他已被許多金錢...
    Visby閱讀 425評論 7 17
  • 2008年之前的美國經(jīng)濟相當于進入了加護病房,而2008年之后,像是打了一劑強心針一般,現(xiàn)在可以說已經(jīng)度過了危險期...
    基秘檔案閱讀 510評論 0 1
  • 吳茉莉怎么也沒想到,死亡會來的這么快。只是出門摔了一跤,居然就爬不起來了。 吳茉莉今年已經(jīng)86歲了,如果真的死了,...
    25a4d71a9d37閱讀 493評論 3 1