java面試問題參考_第1頁
java面試問題參考_第2頁
java面試問題參考_第3頁
java面試問題參考_第4頁
java面試問題參考_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

電話面試主要考察3塊內(nèi)容:1、Java的相關基礎知識,開源框架的原理,JVM,多線程,高并發(fā),中間件等;2、之前項目經(jīng)歷,運用的技術,遇到的問題,如何解決,個人有什么收獲和成長;3、對于技術的熱情(平時是否看些技術書籍,逛論壇,寫博客,寫源代碼或程序等);他們電面不通過我這邊約時間,你如果接到電話不方便,可以跟面試官改約,如果漏接電話,可以找我,我去協(xié)調(diào),一般面試官會在聯(lián)系的。CoreJava:(P6級必問其中3題以上)1)整數(shù)數(shù)組按絕對值排序2)ConcurrentHashMap的數(shù)據(jù)結構3)非阻塞IO和異步IO的區(qū)別4)內(nèi)存管理機制,如何回收過期對象,判斷依據(jù),內(nèi)存溢出場景,如何排查等(P7需要很清楚的知道jvm的內(nèi)存結構,回收過程,及虛擬機相關的回收算法及設計初衷)5)equals和==的區(qū)別6)final和finally7)常用的集合類有哪些?區(qū)別是什么?hashmap和hashtable的區(qū)別。哪些是線程安全的哪些不是?8)Object中的常見的方法。9)java中的異常體系,異常出現(xiàn)的情況如:ClassNotFound、空指針等10)JVM的內(nèi)存模型是怎么樣的?應用突然變得很慢,如何定位?11)Java的異常類層次結構12)對JDK8的新特性有什么了解13)Java的類加載器的機制((P7除了知道機制外,需要能夠說明,利用classloader特性的一些場景應用)14)原子類的實現(xiàn);15)Error、Exception和RuntimeException的區(qū)別,作用又是什么16)IO和NIO本質(zhì)不同在實際項目使用場景及如何使用;17)sleep()和wait()有什么區(qū)別;數(shù)據(jù)庫&事物:(P6級必問)什么樣的場景會產(chǎn)生數(shù)據(jù)庫死鎖,如何解決SQL如何優(yōu)化oracle或者mysql分頁的實現(xiàn)思路SQL怎么判斷字段是否為空唯一索引能否插入空數(shù)據(jù)庫索引的算法原理;樂觀鎖,悲觀鎖;WEB(P6級必問)post/get的區(qū)別是什么cookie/session有什么區(qū)別web集群中登錄態(tài)如何共享xss、csrf等如何防范?sql注入如何防范?瀏覽器緩存策略;Ajax如何解決跨域問題;常用框架(P6級必問)springAOP/IOC的理解,大致原理,類內(nèi)部調(diào)用是否會觸發(fā)aop的邏輯?為什么?Spring的事物傳播屬性或數(shù)據(jù)庫的事物隔離級別,實現(xiàn)原理velocity如何避免引用空屬性的報錯?spring的單例或者原型如何配置?還用過其他什么scope?log4j或者logback的日志記錄文件在哪里?(開放式問題,怎么確定日志打到哪里了)工具:maven中如何排除包沖突svn合并代碼怎么做分布式:如何實現(xiàn)分布式鎖分布式Session如何實現(xiàn)如何消除分布式事物MetaQ,Zookeeper的原理和適用場景,(P7需要對業(yè)界的同類產(chǎn)品有一定的了解,知道各自的優(yōu)缺點)Redis3.0的分布式集群架構,(P7需要對業(yè)界的同類產(chǎn)品有一定的了解,知道各自的優(yōu)缺點)高并發(fā):原子計數(shù)器AtomicInteger的技術實現(xiàn)volatile的內(nèi)存模型接口服務如何防止重復調(diào)用?自己使用過多線程的場景是什么?線程安全如何保證?java的并發(fā)框架是否用過,線程池是否用過,RejectedExecutionHandler是否知道?設計:對常用設計模式的了解,在項目中的實際應用。排序算法描述;在項目中是否采用分層的結構,是怎樣劃分的,各層之間采用了哪些相關技術;場景問題:對所做的系統(tǒng)的業(yè)務描述。能夠描述清楚業(yè)務的核心邏輯和模型抽象,技術問題解決有正確思路(P6要求)。對其中的技術選型,技術方案有周全考慮,并且獨立完成一個較復雜系統(tǒng)的設計和實現(xiàn)。(p7要求)自己平時會學習些什么技術,學習程度如何?做項目過程中遇到什么技術難點;(p6和P7通過問題的技術難度、技術范圍來區(qū)分);怎么看待加班;線上問題分析處理是否有經(jīng)驗如何解決的;P7除了要抽查上面的技術問題外,建議選擇詢問以下問題:描述一個獨立設計的較復雜系統(tǒng)的設計思路和實現(xiàn),能夠清晰表達系統(tǒng)中的關鍵概念模型,行業(yè)內(nèi)的對標產(chǎn)品及相關技術的熟悉程度;對其中的技術方案有周全考慮,技術方案完整無明顯漏洞;實際項目設計中的延展性,對業(yè)務未來發(fā)展有一定考慮;實際項目設計中如何保持優(yōu)雅,方便運維和發(fā)展;獨立設計系統(tǒng)中的技術選型的比較,熟悉的技術領域最佳實踐;開發(fā)設計中,采取了什么樣的技術手段,提高開發(fā)的效率;如果要設計一個搜索引擎,像google那樣只有兩個頁面,要求性能最大化,web方面應該如何設計?(不需要考慮搜索的邏輯)項目中用到點的技術細節(jié)挖掘;主要考察他對技術細節(jié)深度理解。如對MetaQ原理的理解,同類產(chǎn)品的比較。算法和數(shù)據(jù)結構的描述;展示他對各數(shù)據(jù)結構的理解,不同場景下如何設計合理的數(shù)據(jù)結構和算法,如何權衡時間與空間的取舍;troubleshooting的最佳實踐。這里根據(jù)不同的trouble情況會涉及到jvm內(nèi)存,數(shù)據(jù)庫,操作系統(tǒng)等相關的知識點。目前團隊的瓶頸和困難分析。碰到過的最棘手技術問題或最復雜的業(yè)務場景的設計。技術一面和二面的側重點:一面重點(從前到后):技術能力,實際動手能力;技術思路;溝通表達能力;學習能力;Goku1.MyBastis如何映射,MyBatis原理。2.如何實現(xiàn)高可用的,你的系統(tǒng)怎么達到高可用的?3.redis底層實現(xiàn),redis是如何更新緩存的?4.集合框架有哪些是線程安全的?哪些是非安全的?5.開發(fā)中你們?nèi)绾芜M行單元測試?覆蓋率如何?自動化測試怎么達到?6.SpringMvc執(zhí)行流程,java常用設計模式。7.eureka怎么保證可用性,及底其層實現(xiàn),與zookeeper有什么區(qū)別?8.高并發(fā)相關的問題,concurrent相關包。9.為什么使用redis做緩存而不是其他的消息隊列入kafka,以及項目的穩(wěn)定性。10.事務一定會鎖表嗎?11.java并發(fā)和線程同步,同步機制,鎖具體解釋一下。12.redis集群搭建,分詞算法、redis主從同步機制。13.常用的線程池,threadlocal有什么用,多線程并發(fā)解決辦法。1、分布式事務2、服務降級熔斷和降級Hystrix3、ServiceMesh4、分布式請求跟蹤系統(tǒng)5、NewSql6、分布式鎖Etcd7、服務熔斷Hystrix8、安全方面的架構9、服務注冊治理10、高并發(fā)手段11、負載均衡12、冪等設計13、服務限流14、配置中心15、消息隊列16、服務管理17、服務調(diào)度18、分庫分表19、sql優(yōu)化20、數(shù)據(jù)一致性21、服務監(jiān)控開源監(jiān)控框架22、RPC網(wǎng)關:統(tǒng)一認證api鑒權api限流http://www.ciliba.fun/detail/43675741.htmlhttp://www.ciliba.fun/s/偷拍.html/q/偷拍.html/q/偷拍.htmlhttp://www.btdad.sitehttps://bt.suobt001.xyz/search/偷拍/基礎篇基本功面向對象的特征final,finally,finalize的區(qū)別int和Integer有什么區(qū)別重載和重寫的區(qū)別抽象類和接口有什么區(qū)別說說反射的用途及實現(xiàn)說說自定義注解的場景及實現(xiàn)HTTP請求的GET與POST方式的區(qū)別session與cookie區(qū)別session分布式處理JDBC流程MVC設計思想equals與==的區(qū)別集合List和Set區(qū)別List和Map區(qū)別Arraylist與LinkedList區(qū)別ArrayList與Vector區(qū)別HashMap和Hashtable的區(qū)別HashSet和HashMap區(qū)別HashMap和ConcurrentHashMap的區(qū)別HashMap的工作原理及代碼實現(xiàn)ConcurrentHashMap的工作原理及代碼實現(xiàn)線程創(chuàng)建線程的方式及實現(xiàn)sleep()、join()、yield()有什么區(qū)別說說CountDownLatch原理說說CyclicBarrier原理說說Semaphore原理說說Exchanger原理說說CountDownLatch與CyclicBarrier區(qū)別ThreadLocal原理分析講講線程池的實現(xiàn)原理線程池的幾種方式線程的生命周期鎖機制說說線程安全問題volatile實現(xiàn)原理synchronize實現(xiàn)原理synchronized與lock的區(qū)別CAS樂觀鎖ABA問題樂觀鎖的業(yè)務場景及實現(xiàn)方式核心篇數(shù)據(jù)存儲MySQL索引使用的注意事項說說反模式設計說說分庫與分表設計分庫與分表帶來的分布式困境與應對之策說說SQL優(yōu)化之道MySQL遇到的死鎖問題存儲引擎的InnoDB與MyISAM數(shù)據(jù)庫索引的原理為什么要用B-tree聚集索引與非聚集索引的區(qū)別limit20000加載很慢怎么解決選擇合適的分布式主鍵方案選擇合適的數(shù)據(jù)存儲方案ObjectId規(guī)則聊聊MongoDB使用場景倒排索引聊聊ElasticSearch使用場景緩存使用Redis有哪些類型Redis內(nèi)部結構聊聊Redis使用場景Redis持久化機制Redis如何實現(xiàn)持久化Redis集群方案與實現(xiàn)Redis為什么是單線程的緩存奔潰緩存降級使用緩存的合理性問題消息隊列消息隊列的使用場景消息的重發(fā)補償解決思路消息的冪等性解決思路消息的堆積解決思路自己如何實現(xiàn)消息隊列如何保證消息的有序性框架篇SpringBeanFactory和ApplicationContext有什么區(qū)別SpringBean的生命周期SpringIOC如何實現(xiàn)說說SpringAOPSpringAOP實現(xiàn)原理動態(tài)代理(cglib與JDK)Spring事務實現(xiàn)方式Spring事務底層原理如何自定義注解實現(xiàn)功能SpringMVC運行流程SpringMVC啟動流程Spring的單例實現(xiàn)原理Spring框架中用到了哪些設計模式Spring其他產(chǎn)品(SrpingBoot、SpringCloud、SpringSecuirity、SpringData、SpringAMQP等)Netty為什么選擇Netty說說業(yè)務中,Netty的使用場景原生的NIO在JDK1.7版本存在epollbug什么是TCP粘包/拆包TCP粘包/拆包的解決辦法Netty線程模型說說Netty的零拷貝Netty內(nèi)部執(zhí)行流程Netty重連實現(xiàn)微服務篇微服務前后端分離是如何做的微服務哪些框架你怎么理解RPC框架說說RPC的實現(xiàn)原理說說Dubbo的實現(xiàn)原理你怎么理解RESTful說說如何設計一個良好的API如何理解RESTfulAPI的冪等性如何保證接口的冪等性說說CAP定理、BASE理論怎么考慮數(shù)據(jù)一致性問題說說最終一致性的實現(xiàn)方案你怎么看待微服務微服務與SOA的區(qū)別如何拆分服務微服務如何進行數(shù)據(jù)庫管理如何應對微服務的鏈式調(diào)用異常對于快速追蹤與定位問題微服務的安全分布式談談業(yè)務中使用分布式的場景Session分布式方案分布式鎖的場景分布是鎖的實現(xiàn)方案分布式事務集群與負載均衡的算法與實現(xiàn)說說分庫與分表設計分庫與分表帶來的分布式困境與應對之策安全問題安全要素與STRIDE威脅防范常見的Web攻擊服務端通信安全攻防HTTPS原理剖析HTTPS降級攻擊授權與認證基于角色的訪問控制基于數(shù)據(jù)的訪問控制性能優(yōu)化性能指標有哪些如何發(fā)現(xiàn)性能瓶頸性能調(diào)優(yōu)的常見手段說說你在項目中如何進行性能調(diào)優(yōu)工程篇需求分析你如何對需求原型進行理解和拆分說說你對功能性需求的理解說說你對非功能性需求的理解你針對產(chǎn)品提出哪些交互和改進意見你如何理解用戶痛點設計能力說說你在項目中使用過的UML圖你如何考慮組件化你如何考慮服務化你如何進行領域建模你如何劃分領域邊界說說你項目中的領域建模說說概要設計設計模式你項目中有使用哪些設計模式說說常用開源框架中設計模式使用分析說說你對設計原則的理解23種設計模式的設計理念設計模式之間的異同,例如策略模式與狀態(tài)模式的區(qū)別設計模式之間的結合,例如策略模式+簡單工廠模式的實踐設計模式的性能,例如單例模式哪種性能更好。業(yè)務工程你系統(tǒng)中的前后端分離是如何做的說說你的開發(fā)流程你和團隊是如何溝通的你如何進行代碼評審說說你對技術與業(yè)務的理解說說你在項目中經(jīng)常遇到的Exception說說你在項目中遇到感覺最難Bug,怎么解決的說說你在項目中遇到印象最深困難,怎么解決的你覺得你們項目還有哪些不足的地方你是否遇到過CPU100%,如何排查與解決你是否遇到過內(nèi)存OOM,如何排查與解決說說你對敏捷開發(fā)的實踐說說你對開發(fā)運維的實踐介紹下工作中的一個對自己最有價值的項目,以及在這個過程中的角色(1)多個線程順序執(zhí)行,如果有一個線程運行超時了,那么如何保證超時線程不影響其他線程執(zhí)行?答:使用Thread.join(超時時長)(3)并發(fā)集合有哪些?非阻塞式列表對應的實現(xiàn)類:ConcurrentLinkedDeque(4)mysql什么情況下會死鎖?(5)transition關鍵字是什么,ArrayList如何序列化的?(6)java提供了哪些線程池,ExecutorService的幾個參數(shù)是什么意思?第二個參數(shù)和第三個參數(shù)有什么關系?(7)平時會用到哪些事務隔離級別?(8)HashMap數(shù)據(jù)結構是如何的,equal和hash是什么作用?hash相同,那么equal是否相同?equal相同,那么hash是否相同?(9)JVM默認gc是哪個?

CMS怎么工作的?為什么會出現(xiàn)STW(STOPTHEWORLD)?什么時候會觸發(fā)CMS?什么情況下會觸發(fā)fullGC?如果1G內(nèi)存,那是否可以使用CMS?(10)Java8的HashMap為什么要用紅黑樹?紅黑樹的時間復雜度是多少?(11)Java7的ConcurrentHashMap的數(shù)據(jù)結構是怎么樣的?Java8的ConcurrentHashMap的數(shù)據(jù)結構又是怎么樣的,為什么要用重量鎖synchronized,而不用并發(fā)鎖?(11)分表分庫上進行分頁查詢,SQL如何更優(yōu)化?(12)linux下,如何定位java的cpu占用率高的代碼?(13)熟悉哪些linux的命令,如何查找出java的內(nèi)存占用率高的代碼?(14)如果java有一個方法效率很慢,請問如何排查?請說出來平時工作上遇到哪些類似情況,如何解決的?(15)jvm有哪些常用命令?各有什么作用?(16)描述下Dubbo的工作原理?如果Dubbo提供者、消費者配置都正常無誤,但是會出現(xiàn)Dubbo消費者啟動時會無法訂閱到服務,請問什么情況下出現(xiàn)?(17)SpringMVC的核心類有哪些?一個請求參數(shù)如何傳遞到方法中的參數(shù)中?如果請求參數(shù)a,那么對應方法中的參數(shù)有兩個,一個是對象(對象有a屬性),另一個是字符串a(chǎn),請問這參數(shù)a如何傳遞的?(18)代理模式和包裝模式有什么區(qū)別?靜態(tài)代理和包裝模式從代碼上是否很相似,那么什么會要區(qū)分這2個模式?(19)為什么要用負載均衡,負載均衡有哪些?(20)HashMap是否線程安全,為什么?(21)Spring的Bean是否單例?那么如何保證多線程安全?(22)mybatis的${}和#{}有什么區(qū)別?1、jvm虛擬機:2、mysql事務3、復雜sql4、數(shù)據(jù)量5、kafka6、集合源碼map7、有序map8、鎖9、項目描述10、java8新特性11、線程池12、有序mapLinkedHashMap13、動態(tài)代理14、對象類型的判斷?A:instanceof15、Q:自定義注解詳見:/dalaoyang/p/8657030.htmlA:創(chuàng)建自定義注解與編寫接口很相似,除了它的接口關鍵字前有個@符號。@Target是java的元注解(即修飾注解的注解),這里的@Target({METHOD,TYPE})指可以修飾方法、描述類、接口(包括注解類型)或enum聲明。@Retention是java中的運行時注解,可以劃分為三類1.RetentionPolicy.RUNTIME:注解不僅會被保存到class文件里,在jvm加載class文件之后仍然不會消失。2.RetentionPolicy.CLASS:注解會被保留到class文件里,但jvm加載class文件時被遺棄,默認的生命周期如此。3.RetentionPolicy.SOURCE:注解只會保留在源文件中,當java文件變異成class文件shi@Inherited:允許子類繼承父類的注解@Documented:注解表明制作javadoc時,是否將注解信息加入文檔。(添加時表示制作javadoc時將注解會加入其中)自定義注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public@interfaceAnnotations{longtime()default-1;}16、Q:線程池核心最大線程數(shù)達到核心之后如何創(chuàng)建隊列A:/waytobestcoder/p/5323130.html17、Q:mysql數(shù)據(jù)庫隔離級別是多少A:mysql數(shù)據(jù)庫的四種隔離級別/aiseek/p/8175849.html1.READUNCIMMITTED(未提交讀)總結:這就是事務還沒提交,而別的事務可以看到他其中修改的數(shù)據(jù)的后果,也就是臟讀。2.READCOMMITTED(提交讀)總結:這就是小華的事務執(zhí)行到一半,而小明看不到他執(zhí)行的操作,所以看到的是舊數(shù)據(jù),也就是無效的數(shù)據(jù)3.REPEATABLEREAD(可重復讀)總結:雖然讀取同一條數(shù)據(jù)可以保證一致性,但是卻不能保證沒有插入新的數(shù)據(jù)4.SERIALIZABLE(可串行化)18、合理創(chuàng)建索引索引類型Mysql目前主要有以下幾種索引類型:普通索引、唯一索引、全文索引(FULLTEXT)、單列索引、多列索引、組合索引19、Q:查看sql有沒有執(zhí)行索引A:possible_keysA在select窗口中,執(zhí)行以下語句:setprofiling=1;--打開profile分析工具showvariableslike'%profil%';--查看是否生效showprocesslist;--查看進程usecmc;--選擇數(shù)據(jù)庫showPROFILEall;--全部分析的類型showindexfromt_log_account;##查看某個表的索引showindexfromt_car_copy;##查看某個表的索引--使用explain命令查看query語句的性能:EXPLAINselect*fromt_car_copy;##查看執(zhí)行計劃中的sql性能EXPLAINselect*fromt_car_copywhereorg_id='3';EXPLAINselect*fromt_car_copywhere1=1andorg_id='3';20、Q:redis默認端口號A:637921、redis過期策略、過期數(shù)據(jù)(底層)詳見:/weixin_34292959/article/details/86364108Redis三種Key過期策略被動(惰性)刪除、主動刪除、maxmemory22、Q:mybaties一級二級緩存區(qū)別A:一級緩存是SqlSession級別的緩存。在操作數(shù)據(jù)庫時需要構造sqlSession對象,在對象中有一個數(shù)據(jù)結構用于存儲緩存數(shù)據(jù)。不同的sqlSession之間的緩存數(shù)據(jù)區(qū)域是互相不影響的。也就是他只能作用在同一個sqlSession中,不同的sqlSession中的緩存是互相不能讀取的。A:二級緩存是mapper級別的緩存,多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession可以共用二級緩存,二級緩存是跨SqlSession的。23、開發(fā)mybaties插件技術24、springboot啟動流程25、Q:分布式鎖實現(xiàn)方式A:基于數(shù)據(jù)庫實現(xiàn)分布式鎖;基于緩存(Redis等)實現(xiàn)分布式鎖;基于Zookeeper實現(xiàn)分布式鎖;26、接口,抽象類27、多態(tài)28、arrayList底層AX_ARRAY_SIZE強轉29、arrayList和hasmap默認大小30、SimDateFormat線程安全嗎31、springaop原理32、spring事務幾種533、springioc以及實現(xiàn)方式34、mysql統(tǒng)計空列count1*嗎單引號:在進行count()統(tǒng)計某列的記錄數(shù)的時候,如果采用的NULL值,會別系統(tǒng)自動忽略掉,但是空值是會進行統(tǒng)計到其中的。35、左連接會走索引嗎36、Java8垃圾回收機制37、描述秒殺系統(tǒng)設計,不用redis,高并發(fā)怎么處理38、mysql行鎖39、單點登錄設計40、權限設計41、離職原因42、jvm內(nèi)存模型、堆棧43、集合、hasmap44、線程池,參數(shù)45、springmvc注解46、服務之間如何調(diào)用47、es48、redis49、kafka多發(fā)、漏發(fā)50、商品秒殺51、springcloud組件52、支付53、git命令54、分布式事務秒殺鎖住庫存redis基本數(shù)據(jù)類型springboot啟動類注解mybaties#$區(qū)別mybatis動態(tài)orderby使用$線程什么周期新建(New)、就緒(Runnable)、運行(Running)、阻塞(Blocked)和死亡(Dead)五種狀態(tài)hasmaplienkhasmap安全map運行時和非運行時異常百度移動游戲1.ArrayList和LinkedList區(qū)別2.HashMap實現(xiàn)原理,內(nèi)部構造,JDK1.8的實現(xiàn)3.如何設計數(shù)據(jù)庫4.JVM堆為什么分成年輕代和老年代5.ConcurrentHashMap原理6.一個方法中定義一個int型變量和一個Integer變量,這兩個變量什么時候會被回收阿里高德1.LinkedList是單向鏈表還是雙向鏈表2.JVM內(nèi)存模型3.GC算法以及回收器(CMS)4.TCP、UDP、IP、HTTP分別處于哪層阿里1.JVM內(nèi)存模型2.ZooKeeper選舉愛奇藝1.CPU100%如何找問題2.MySQL兩種存儲引擎(Innodb和MyISAM)的區(qū)別3.Redis和Memecache區(qū)別微博1.Redis存儲一個k-v占多少內(nèi)存2.MySQL索引問題,聚簇索引(a,b,c),查詢時使用條件b和c是否走索引3.如何高效的將字符串IP翻譯成整數(shù)360面試1.如何實現(xiàn)一個list,set2,list如何去重3.如何實現(xiàn)線程在同一時刻執(zhí)行4.線程的實現(xiàn)方式5.項目的演示6.hashmap,hashtable的區(qū)別藍汛1.redis2.netty3.題目講解1.Java類加載器機制類加載器結構:引導類加載器(BootstrapClassLoader,原生代碼寫的,不繼承自ClassLoader):加載Java核心庫|/擴展類加載器(ExtClassLoader,繼承自ClassLoader,parent==null):加載Java的擴展庫|/系統(tǒng)類加載器(SystemClassLoader,繼承自ClassLoader,parent==ExtClassLoader):根據(jù)Java應用的類路徑(CLASSPATH)來加載Java類,可以通過ClassLoader.getSystemClassLoader()來獲取它。類加載過程:加載類時采用代理機制,當前類加載器首先會讓父類加載器進行加載,如果加載不到,在自己加載。web類加載器機制不同,優(yōu)先自己加載(除Java核心類庫外)。如何開發(fā)自己的類加載器:繼承自ClassLoader,重寫findClass(),方法內(nèi)獲取到字節(jié)碼后調(diào)用父類的defineClass()即可。不可重寫loadClass()(LoadClass內(nèi)部實現(xiàn)代理機制邏輯)虛擬機的類加載機制:虛擬機把描述類的數(shù)據(jù)class文件加載到內(nèi)存,并對數(shù)據(jù)進行校驗,轉換解析和初始化,最終形成可被虛擬機直接使用的java類在類裝載到一個jvm中需要經(jīng)過加載——>鏈接->初始化(a)校驗:檢查載入Class文件數(shù)據(jù)的正確性;(b)準備:給類的靜態(tài)變量分配存儲空間;(c)解析:將符號引用轉成直接引用;2.垃圾回收算法a.引用計數(shù)法通過對一個對象增加一個計數(shù)器方式實現(xiàn)。優(yōu)點:實現(xiàn)簡單缺點:無法解決循環(huán)引用問題b.標記-清除算法通過根節(jié)點,標記所有從根節(jié)點可達的對象,然后將未被標記的對象進行清除。、優(yōu)點:可解決循環(huán)引用問題缺點:造成內(nèi)存碎片c.復制算法將原有內(nèi)存劃分成兩塊,每次只使用一塊,回收時將正在使用的內(nèi)存中存活的對象復制到另一塊內(nèi)存中,然后清除之前內(nèi)存中剩余的對象,互換兩塊內(nèi)存的角色。優(yōu)點:如果存活對象很少,那么需要復制的對象將很少,效率很高,同時內(nèi)存也會連續(xù)缺點:將內(nèi)存折半d.標記-壓縮算法使用標記方式尋找存活對象,然后將存活對象壓縮到內(nèi)存的一端,清理到外界的內(nèi)存即可。優(yōu)點:內(nèi)存連續(xù)缺點:需要移動對象,所以需要改變很多引用地址e.增量算法該算法是為了解決Stop-The-World問題,即進行垃圾收集時需要暫停應用程序,所以為了減少應用程序暫停的時間,將垃圾回收過程分批進行。有點:降低應用程序暫停時間缺點:增加線程上下文切換時間,降低系統(tǒng)吞吐率f.分代將內(nèi)存分成不同的塊,針對不同內(nèi)存塊對象的特征采用不同的垃圾回收算法。例如:HotSpot將內(nèi)存分成年輕代和老年代,年輕代的特征是對象量多,但是存活對象較少,適合采用效率較高的復制算法,將存活對象復制到另一塊內(nèi)存,可以解決內(nèi)存碎片問題;而老年代對象生命周期較長,且對象較大,故適合采用標記-壓縮算法。3.垃圾回收器類型a.新生代串行收集器(DefNew)b.老年代串行收集器(DefNew)c.并行收集器(ParNew)d.新生代并行回收收集器(PSYoungGen)e.老年代并行回收收集器(PSYoungGen)f.CMS收集器g.G1收集器4.JVMa.JVM內(nèi)存模型:JVM內(nèi)存模型分成:程序計數(shù)器、虛擬機棧、本地方法棧、堆、方法區(qū)五個區(qū)域b.程序計數(shù)器、虛擬機棧以及本地方法棧屬于線程私有,而堆和方法區(qū)是線程共享的。c.程序計數(shù)器保存當前線程執(zhí)行的字節(jié)碼行號,線程在執(zhí)行每個方法時都會在虛擬機棧上創(chuàng)建一個棧幀,棧幀中主要保存本地變量表、操作棧等信息,本地方法棧是用于本地方法調(diào)用的,如果線程當前執(zhí)行的是本地方法,那么程序計數(shù)器為null。d.方法區(qū)保存Java的類信息、靜態(tài)變量、JIT編譯的本地代碼等,常量池在JDK1.7已移到堆中。e.堆保存著程序運行過程中創(chuàng)建的所有對象信息。堆還可細分成:年輕代和老年代,年輕代還可細分為:一個eden區(qū)和兩個survivor區(qū)(from和to)。對象的創(chuàng)建是在eden區(qū),大對象有可能直接在老年代創(chuàng)建。f.針對年輕代和老年代對象的不同特征,垃圾回收器對年輕代采用復制算法,而老年代采用標記-壓縮算法。年輕代由于存活對象不多,而且對象較小,直接采用復制算法會有很高的效率;老年代由于存活對象較多,且對象較大,使用標記算法較好,同時為了避免比較算法產(chǎn)生的碎片,采用壓縮算法進行壓縮。5.類加載機制1)類加載時機主動引用a.new對象、訪問類的靜態(tài)屬性與調(diào)用類的靜態(tài)方法時b.反射調(diào)用時c.初始化類時,需先初始化父類d.虛擬機啟動時需指定一個主類,虛擬機會先初始化該類被動引用a.使用子類訪問父類的靜態(tài)變量或調(diào)用父類靜態(tài)方法時只會初始化父類,不會初始化子類b.定義一個該類的數(shù)組并不會引發(fā)類的初始化c.引用類的常量(finalstatic)不會引發(fā)類的初始化,因為常量會被保存到常量池,所以引用常量直接引用常量池,并不通過類2)類加載過程加載–>驗證–>準備–>解析–>初始化加載通過類加載器進行加載,代理方式驗證主要用于對class內(nèi)容進行安全性校驗準備是在方法區(qū)為類分配內(nèi)存,并將類屬性置0解析將字符串常量池內(nèi)的符號引用替換為直接引用初始化主要是對類的初始化,即為靜態(tài)變量賦值,執(zhí)行靜態(tài)語句塊3)強引用,弱引用和軟引用6.文件讀取過程a.確定所請求的數(shù)據(jù)分布于文件系統(tǒng)的哪些頁b.在內(nèi)核空間分配足夠的內(nèi)存頁,以容納確定的文件系統(tǒng)頁c.在內(nèi)存頁與文件系統(tǒng)頁之間建立映射關系d.通過虛擬內(nèi)存將頁面調(diào)入,從磁盤上讀取頁面內(nèi)容e.頁面調(diào)入完成,文件系統(tǒng)對原始數(shù)據(jù)進行解析,取得所需文件內(nèi)容或屬性信息7.NIO1)文件鎖:文件鎖是針對進程級別的,如果一個JVM中有一個線程已獲取文件鎖,另一個線程再獲取就會拋出OverlappingFileLockException異常。請求兩個共享鎖也不行。2)NIO與IO的區(qū)別:數(shù)據(jù)打包與傳輸?shù)姆绞讲煌?。舊的IO以流的方式處理數(shù)據(jù),而NIO以塊的方式處理數(shù)據(jù)?,F(xiàn)代的操作系統(tǒng)都是按塊從磁盤獲取數(shù)據(jù),所以NIO將比舊IO在數(shù)據(jù)處理上效率高很多。8.Http協(xié)議1)請求內(nèi)容:請求行:方法URI版本號POST/reg.jspHTTP/(CRLF)請求頭(消息頭):請求頭包含如Content-Length、Accept等參數(shù)請求體(消息正文):傳遞的數(shù)據(jù),如POST的內(nèi)容2)響應內(nèi)容:狀態(tài)行:服務器Http版本號狀態(tài)碼狀態(tài)代碼描述響應頭:響應體:8.Java代碼優(yōu)化普通代碼方面:1)在集合的長度可知情況下使用帶有指定初始化容量的集合構造器2)單線程情況下使用非線程安全的類,而非線程安全的,如StringBuffer和HashTable3)避免錯誤使用異常機制,除非是是在無法判斷是否會發(fā)生異常的情況下才使用,如可預先判斷異常狀態(tài)則預先進行條件判斷而避免使用異常機制4)盡量使用final常量,避免過多的使用static變量(由于static變量和方法很難回收,需要回收該Class信息,需回收對應的ClassLoader)5)盡量使用局部變量,因為局部變量保存在棧中,訪問速度高于堆并發(fā)方面:1)盡量使用線程池,并合理設置線程池的大小,如CPU密集型任務使用CPU+1,IO密集型任務使用2*CPU2)不要輕易使用鎖,降低鎖的粒度,合理使用讀寫鎖3)使用JDK提供的高效的并發(fā)工具類,如J.U.C下的并發(fā)集合類,以及原子類9.redis和memcached區(qū)別1)redis支持豐富的數(shù)據(jù)類型,memcached僅支持單一的k-v數(shù)據(jù)類型2)redis支持數(shù)據(jù)持久化,如AOF和RBD,memcached不支持,重啟后數(shù)據(jù)就全部丟失3)memcached支持CAS,redis只能通過將多個操作組合到一起順序執(zhí)行的方式實現(xiàn)很簡單的事務機制10.mysql兩個存儲引擎區(qū)別InnoDB支持事務和行級鎖以及外鍵MyISAM不支持事務和行級鎖以及外鍵,只支持表鎖11.CPU100%如何分析通過top-H查看CPU占用率最高的線程ID,找到線程ID之后,可以通過JDK提供的JVM監(jiān)控工具,如jstack將線程的堆棧信息打印出來(需要將十進制的線程ID轉成16進制)。一般占用CPU很高的情況有:1)死循環(huán)2)密集型計算12.如何設計數(shù)據(jù)庫1.表名要能體現(xiàn)出屬性的含義2.動靜分離,將一個表的變化的屬性與不變的屬性分開13.數(shù)據(jù)庫索引問題1.MySQL僅能對索引最左邊的前綴進行有效的查找例如:索引(a,b),select*fromtablewherea=a1andb=b1和select*fromtablewherea=a1可以走索引,但是select*fromtablewhereb=b1不走索引,因為沒有組合索引的引導列2.支付范圍查詢————————————————版權聲明:本文為CSDN博主「greekw」的原創(chuàng)文章,遵循CC4.0BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。原文鏈接:/w2cschool/article/details/8006641630.了解哪些開源的中間件?緩存?消息?分布式框架?31.用到過哪些設計模式?單例模式的實現(xiàn)?32.數(shù)據(jù)庫的事務實現(xiàn)原理、操作過程、如何做到事物之間的獨立性等問題33.數(shù)據(jù)庫的臟讀,幻讀,不可重復讀出現(xiàn)的原因原理,解決辦法34.數(shù)據(jù)庫的隔離級別、MVCC35.樂觀鎖、悲觀鎖、互斥鎖、讀寫鎖的原理實現(xiàn)與區(qū)別36.線程的生命周期37.一致性hash算法原理與應用38.CAP原則40.分布式raft算法1.B+樹、B-樹的區(qū)別?2.數(shù)據(jù)庫隔離級別,幻讀和不可重復讀的區(qū)別?3.有hell,well,hello,world等字符串組,現(xiàn)在問能否拼接成helloworld,代碼實現(xiàn)。4.快排算法實現(xiàn)5.線程安全的單例模式6.25匹馬賽跑,有一個賽場,只有五個賽道,沒有計時器,只能通過目測來記錄快慢,求出第三3快的馬要多少場比賽?7.kmp算法next數(shù)組的求解思路8.數(shù)組中有三個數(shù)字出現(xiàn)超過3/4,求這三個數(shù)字?9.1到n+2個數(shù)組中缺了兩個數(shù),如何用O(n)時間,O(1)空間找到這兩個數(shù)字。10.一條線段長為1,隨機選兩個點,將改線段分為三段,三段能成三角形的概率是多少?11.有一個教授,他三個學生,腦袋背后分別各寫了一個數(shù)字,其中一個數(shù)字是另外兩個數(shù)字的和,經(jīng)過幾輪后,有一個學生猜出了自己的數(shù)字請問是什么原因?12.B+樹做索引時,B+樹通常高度為多少層?要參考哪些條件?1.static有什么用途?(請至少說明兩種)2.引用與指針有什么區(qū)別?3.描述實時系統(tǒng)的基本特性4.全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?5.什么是平衡二叉樹?6.堆棧溢出一般是由什么原因導致的?7.什么函數(shù)不能聲明為虛函數(shù)?8.冒泡排序算法的時間復雜度是什么?9.寫出floatx與“零值”比較的if語句10.Internet采用哪種網(wǎng)絡協(xié)議?該協(xié)議的主要層次結構?11.Internet物理地址和IP地址轉換采用什么協(xié)議?12.IP地址的編碼分為哪倆部分?13.用戶輸入M,N值,從1至N開始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該數(shù)值,直至全部輸出。寫出C程序。14.不能做switch()的參數(shù)類型是15.intA[nSize],其中隱藏著若干0,其余非0整數(shù),寫一個函數(shù)intFunc(int*A,intnSize),使A把0移至后面,非0整數(shù)移至數(shù)組前面并保持有序,返回值為原數(shù)據(jù)中第一個元素為0的下標。16.寫一個程序,要求功能:求出用1,2,5這三個數(shù)不同個數(shù)組合的和為100的組合個數(shù)17.實現(xiàn)一個函數(shù),把一個字符串中的字符從小寫轉為大寫18.隨機輸入一個數(shù),判斷它是不是對稱數(shù)(回文數(shù))(如3,121,12321,45254)。不能用字符串庫函數(shù)19.求2~2000的所有素數(shù).有足夠的內(nèi)存,要求盡量快20.A,B,C,D四個進程,A向buf里面寫數(shù)據(jù),B,C,D向buf里面讀數(shù)據(jù),當A寫完,且B,C,D都讀一次后,A才能再寫。用P,V操作實現(xiàn)。21.將單向鏈表reverse,如ABCD變成DCBA,只能搜索鏈表一次。22.將二叉樹的兩個孩子換位置,即左變右,右變左。不能用遞規(guī)。23.以下屬于物理層的設備是?24.在以太網(wǎng)中,是根據(jù)()地址來區(qū)分不同的設備的?25.以下為傳輸層協(xié)議的是?26.以下對MAC地址描述正確的是?27.以下屬于數(shù)據(jù)鏈路層功能的是?28.IEEE802.3u標準是指?29.如果要將兩計算機通過雙絞線直接連接,正確的線序是?30.在V.35和V.24規(guī)程中,控制信號RTS表示?31.路由器作為網(wǎng)絡互連設備,必須具備以下哪些特點?32.路由器的作用有?33.調(diào)用上一條歷史命令的快捷鍵是?34.交換機工作在OSI七層的哪一層?35.以下對CSMA/CD描述正確的是?36.以下對STOREANDFORWARD描述正確的是?37.以下對交換機工作方式描述正確的是?38.VLAN的主要作用有?39.在交換機中用戶權限分為幾個級別?40.在路由器的配置過程中查詢以S開頭所有命令的方法是?41.第一次配置路由器時可以使用的方法為?42.在何種狀態(tài)下可以為路由器改名?43.某公司申請到一個C類IP地址,但要連接6個的子公司,最大的一個子公司有26臺計算機,每個子公司在一個網(wǎng)段中,則子網(wǎng)掩碼應設為?44.與9mask24屬于同一網(wǎng)段的主機IP地址是?45.ARP協(xié)議的作用是?46.當路由器接收的IP報文的TTL值等于1時,采取的策略是?47.在NetWare網(wǎng)絡中,客戶需要訪問某個類型的服務器時,首先要發(fā)送一個()廣播報文來尋找服務器?48.IPX地址網(wǎng)絡地址有()個字節(jié)?49.對于幀中繼描述正確的是?50.對于INVERSEARP的描述正確的是?1.1并發(fā)編程進階線程共享和協(xié)作并發(fā)工具類實戰(zhàn)站在巨人肩上操作CAS阿里面試常問的顯示鎖和AQS并發(fā)容器源碼解析及應用實戰(zhàn)僅會用線程池是不夠的架構師應該知道的并發(fā)安全解決方案性能優(yōu)化實戰(zhàn)并發(fā)編程面試題目匯集1.2JVM性能深度調(diào)優(yōu)15種方式編寫高效優(yōu)雅Java程序實戰(zhàn)Java內(nèi)村區(qū)域深入解析垃圾回收器和內(nèi)存分配策略你必須知道的JVM執(zhí)行子系統(tǒng)JVM類加載機制及執(zhí)行引擎原理JVM性能優(yōu)化實戰(zhàn)JVM面試錦囊妙計1.3網(wǎng)絡編程與高效IOhttp/tcp/udp網(wǎng)絡協(xié)議原理透析原生JDK網(wǎng)絡編程Netty應用快速入門Netty粘包/半包問題解決實戰(zhàn)Netty進階和實戰(zhàn)Netty源碼深入分析Netty常被問到那些面試題匯集1.4深入Tomcat底層10分鐘熟悉你常用卻又不知道的Tomcat體系架構你必須得知道的Tomcat容器及運行機制Tomcat類加載機制分析Tomcat核心組件源碼解讀Tomcat高級進階Tomcat面試題整理1.5MySQL深度優(yōu)化MySQL存儲引荸選型及注意事項解讀MySQL的共享鎖及排它鎖MySQL事務及隔離性級別30分鐘深入掌握執(zhí)行計劃解讀BTree與B+Tree索引SQL慢查詢配置及分析SQL優(yōu)化策略及實戰(zhàn)MySQL面試題匯總1.6架構基礎必備LinuxLinux安裝指南Linux基礎命令用戶與用戶組系列操作文件與權限系列操作架構師應該掌握的shell腳本基礎二、設計思想解讀開源框架2.1六大原則單一職責原則開閉原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則2.2結構型模式橋接模式適配器模式裝飾器模式代理模式組合模式2.3創(chuàng)建型模式建造者模式單例模式抽象工廠模式工廠方法模式靜態(tài)工廠模式2.4行為型模式模板方法模式策略模式觀察者模式責任鏈模式命令模式訪問者模式2.5Spring5源碼解讀5分鐘快速理解Spring核心流程熟練掌握Spring工作常用注解及陷阱后置處理器源碼解讀I0C容器源碼解讀AOP源碼解讀聲明式事務源碼解讀Spring源碼面試題匯總2.6SpringMVC框架源碼解讀Servlet3.06性能實戰(zhàn)手寫SpringMVC實戰(zhàn)2.7Mybatis框架源碼解讀5分鐘掌握MyBatis的配置使用動態(tài)SQL、緩存及關聯(lián)查詢深入講解10分鐘掌握Mybatis與Spring的集成實戰(zhàn)Mybatis插件開發(fā)及源碼分析實戰(zhàn)多級關聯(lián)實戰(zhàn)手寫MyBatis框架實戰(zhàn)Mybatis常見面試題匯集三、性能直升提升架構技術3.1分布式架構思維大型互聯(lián)網(wǎng)架構演進過程架構師應具備的分布式知識主流分布式架構設計詳解3.2Zookeeper5分鐘搞定Zookeeper安裝及指令解析原生客戶端、zkclient、curotor快速開發(fā)實戰(zhàn)Zookeeper應用實戰(zhàn)Zookeeper底層協(xié)議解讀Zookeeper面試資料整理3.3Nginx5分鐘將你的項目實現(xiàn)Nginx分流Nginx安裝及基本使用Nginx進程模型及配置詳解location規(guī)則及rewrite解析動靜分離實戰(zhàn)反向代理實戰(zhàn)跨域配置實戰(zhàn)緩存配置及Gzip配置實戰(zhàn)https安全認證實戰(zhàn)LVS高可用實戰(zhàn)Nginx那些面試題匯總3.4消息中間件概述消息中間件和RPC的區(qū)別消息中間件使用場景介紹ActiveMQ、RabbitMQ、RocketMQ、Kafka對比消息中間件的編年史3.5ActiveMQ3分鐘快速安裝ActiveMQJMS規(guī)范解讀原生ActiveMQ的API編程ActiveMQ高級特性和用法限時訂單實戰(zhàn)用戶注冊的異步處理實戰(zhàn)企業(yè)級高可用集群部署實戰(zhàn)3.6RabbitMQLinux下安裝與配置消息發(fā)布與消費權衡消息的拒絕怎么解決控制隊列與消息屬性與Spring集成完成應用解耦實戰(zhàn)集群化與鏡像隊列實戰(zhàn)RabbitMQ常見面試題匯總3.7RocketMQRocketMQ快速安裝與配置消息發(fā)送與消費流程解讀RocketMQ消息存儲、消

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論