Java GC機(jī)制(重要程度:)

          主要從三個(gè)方面回答:GC是針對(duì)什么對(duì)象進(jìn)行回收(可達(dá)性分析法),什么時(shí)候開始GC(當(dāng)新生代滿了會(huì)進(jìn)行Minor
          GC,升到老年代的對(duì)象大于老年代剩余空間時(shí)會(huì)進(jìn)行Major
          GC),GC做什么(新生代采用復(fù)制算法,老年代采用標(biāo)記-清除或標(biāo)記-整理算法),感覺回答這些就差不多了,也可以補(bǔ)充一下可以調(diào)優(yōu)的參數(shù)(-XX:newRatio,-Xms,-Xmx等等)。

          如何線程安全的使用HashMap(重要程度:)


          作為Java程序員還是經(jīng)常和HashMap打交道的,所以HashMap的一些原理還是搞搞清除比較好。這個(gè)問題感覺主要就是問HashMap,HashTable,ConcurrentHashMap,sychronizedMap的原理和區(qū)別。

          HashMap是如何解決沖突的(重要程度:)

          其實(shí)就是鏈接法,將索引值相同的元素存放到一個(gè)單鏈表里。但為了解決在頻繁沖突時(shí)HashMap性能降低的問題,Java
          8中做了一個(gè)小優(yōu)化,在沖突的元素個(gè)數(shù)超過設(shè)定的值(默認(rèn)為8)時(shí),會(huì)使用平衡樹來替代鏈表存儲(chǔ)沖突的元素。

          Java創(chuàng)建對(duì)象有哪幾種(重要程度:)

          這個(gè)問題還算好回答,大概有四種—new、工廠模式、反射和克隆,不過這個(gè)問題有可能衍生出關(guān)于設(shè)計(jì)模式,反射,深克隆,淺克隆等一系列問題。。。要做好準(zhǔn)備~
          參考資料:
          設(shè)計(jì)模式Java版
          Java反射詳解
          深克隆與淺克隆的區(qū)別

          注解(重要程度:)


          如果簡(jiǎn)歷中有提到過曾自定義過注解,還是了解清楚比較好。主要是了解在自定義注解時(shí)需要使用的兩個(gè)主要的元注解@Retention和@Target。@Retention用來聲明注解的保留策略,有CLASS,RUNTIME,SOURCE三種,分別表示注解保存在類文件,JVM運(yùn)行時(shí)刻和源代碼中。@Target用來聲明注解可以被添加到哪些類型的元素上,如類型,方法和域等。
          參考資料:
          Java注解

          異常(重要程度:)

          一道筆試題,代碼如下,問返回值是什么。

          ?
          int ret = 0; try{ throw new Exception(); } catch(Exception e){ ret = 1; return
          ret; } finally{ ret = 2; }
          ?

          主要的考點(diǎn)就是catch中的return在finally之后執(zhí)行
          但是會(huì)將return的值放到一個(gè)地方存起來,所以finally中的ret=2會(huì)執(zhí)行,但返回值是1。
          參考資料:
          深入理解Java異常處理機(jī)制
          Java異常處理

          悲觀鎖和樂觀鎖區(qū)別,樂觀鎖適用于什么情況(重要程度:)


          悲觀鎖,就是總覺得有刁民想害朕,每次訪問數(shù)據(jù)的時(shí)候都覺得會(huì)有別人修改它,所以每次拿數(shù)據(jù)時(shí)都會(huì)上鎖,確保在自己使用的過程中不會(huì)被他人訪問。樂觀鎖就是很單純,心態(tài)好,所以每次拿數(shù)據(jù)的時(shí)候都不會(huì)上鎖,只是在更新數(shù)據(jù)的時(shí)候去判斷該數(shù)據(jù)是否被別人修改過。

          大多數(shù)的關(guān)系數(shù)據(jù)庫寫入操作都是基于悲觀鎖,缺點(diǎn)在于如果持有鎖的客戶端運(yùn)行的很慢,那么等待解鎖的客戶端被阻塞的時(shí)間就越長(zhǎng)。Redis的事務(wù)是基于樂觀鎖的機(jī)制,不會(huì)在執(zhí)行WATCH命令時(shí)對(duì)數(shù)據(jù)進(jìn)行加鎖,只是會(huì)在數(shù)據(jù)已經(jīng)被其他客戶端搶先修改了的情況下,通知執(zhí)行WATCH命令的客戶端。樂觀鎖適用于讀多寫少的情況,因?yàn)樵趯懖僮鞅容^頻繁的時(shí)候,會(huì)不斷地retry,從而降低性能。
          參考資料:
          關(guān)于悲觀鎖和樂觀鎖的區(qū)別
          樂觀鎖和悲觀鎖

          單例模式找錯(cuò)誤(重要程度:)

          錯(cuò)誤是沒有將構(gòu)造函數(shù)私有化,單例還是比較簡(jiǎn)單的,把它的餓漢式和懶漢式的兩種實(shí)現(xiàn)方式看明白了就可以了。
          單例模式

          __

          Spring相關(guān)

          關(guān)于Spring的問題主要就是圍繞著Ioc和AOP,它們真是Spring的核心啊。

          Spring Bean的生命周期(重要程度:)

          就不寫我那么low的回答了,直接看參考資料吧。
          參考資料:
          Spring Bean的生命周期
          Top 10 Spring Interview Questions Answers J2EE

          Spring中用到的設(shè)計(jì)模式(重要程度:)

          工廠模式:IOC容器
          代理模式:AOP
          策略模式:在spring采取動(dòng)態(tài)代理時(shí),根據(jù)代理的類有無實(shí)現(xiàn)接口有JDK和CGLIB兩種代理方式,就是采用策略模式實(shí)現(xiàn)的
          單例模式:默認(rèn)情況下spring中的bean只存在一個(gè)實(shí)例
          只知道這四個(gè)。。。。
          參考資料:
          Design Patterns Used in Java Spring Framework

          講一講Spring IoC和AOP(重要程度:)

          IoC的核心是依賴反轉(zhuǎn),將創(chuàng)建對(duì)象和對(duì)象之間的依賴管理交給IoC容器來做,完成對(duì)象之間的解耦。

          AOP主要是利用代理模式,把許多接口都要用的又和接口本身主要的業(yè)務(wù)邏輯無關(guān)的部分抽出來,寫成一個(gè)切面,單獨(dú)維護(hù),比如權(quán)限驗(yàn)證。這樣可以使接口符合“單一職責(zé)原則”,只關(guān)注主要的業(yè)務(wù)邏輯,也提高了代碼的重用性。

          AOP的應(yīng)用場(chǎng)景(重要程度:)


          權(quán)限,日志,處理異常,事務(wù)等等,個(gè)人理解就是把許多接口都要用的又和接口本身主要的業(yè)務(wù)邏輯無關(guān)的部分抽出來,寫成一個(gè)切面,單獨(dú)維護(hù),比如權(quán)限驗(yàn)證。這樣可以使接口符合“單一職責(zé)原則”,只關(guān)注主要的業(yè)務(wù)邏輯,也提高了代碼的重用性。

          Spring中編碼統(tǒng)一要如何做(重要程度:)

          配置一個(gè)攔截器就行了

          ?
          <filter> <filter-name>CharacterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value>
          </init-param> <init-param> <param-name>forceEncoding</param-name>
          <param-value>true</param-value> </init-param> </filter> <filter-mapping>
          <filter-name>CharacterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern> </filter-mapping>
          數(shù)據(jù)庫相關(guān)

          Mysql索引的內(nèi)部結(jié)構(gòu)(重要程度:)

          B+樹,三層,真實(shí)的數(shù)據(jù)存儲(chǔ)在葉子節(jié)點(diǎn)
          參考資料:
          MySQL索引原理及慢查詢優(yōu)化

          如果一個(gè)SQL執(zhí)行時(shí)間比較長(zhǎng)怎么辦(重要程度:)

          可以利用pt-query-digest等工具分析慢查詢?nèi)罩?,也可以用explain查看SQL的執(zhí)行計(jì)劃。

          如果一張表中有上千萬條數(shù)據(jù)應(yīng)該怎么做分頁(重要程度:)

          肯定不能直接limit,offset,主要就是要想辦法避免在數(shù)據(jù)量大時(shí)掃描過多的記錄。

          什么樣的列適合加索引,如果一個(gè)列的值只有1和2,那么它適合加索引么(重要程度:)

          *
          在where從句,group by從句,order by從句,on從句中出現(xiàn)的列

          *
          索引的字段越小越好

          *
          在建立聯(lián)合索引時(shí),離散度大的列放大聯(lián)合索引的前面

          只有1和2不適合建索引

          Redis相關(guān)

          Redis提供哪幾種數(shù)據(jù)結(jié)構(gòu)(重要程度:)

          一共有5種,字符串,散列,列表,集合,有序集合。
          參考資料:
          Redis中文官網(wǎng)

          Redis支持集群么,從哪個(gè)版本開始支持集群的(重要程度:)

          支持集群,從3.0版本開始。當(dāng)然面試時(shí)我也沒記住版本。。。

          Redis集群中,如何將一個(gè)對(duì)象映射到對(duì)應(yīng)的緩存服務(wù)器(重要程度:)

          一般就是hash%N,就是用對(duì)象的hash值對(duì)緩存服務(wù)器的個(gè)數(shù)取余

          接上個(gè)問題,緩存集群中如果新增一臺(tái)服務(wù)器,怎么才能不影響大部分緩存數(shù)據(jù)的命中?(重要程度:)

          其實(shí)就是一致性Hash算法。以前有看過,可惜面試的時(shí)候腦袋就空了,只記得一個(gè)環(huán),果然還是要實(shí)踐啊。
          參考資料:
          Consistent Hashing
          五分鐘理解一致性哈希算法(consistent hashing)

          項(xiàng)目中具體是怎樣使用Redis的(重要程度:)


          根據(jù)實(shí)際情況回答吧。。。。我是主要做權(quán)限控制時(shí)用到了Redis,將用戶Id和權(quán)限Code拼接在一起作為一個(gè)key,放到Redis的集合中,在驗(yàn)證某一用戶是否有指定權(quán)限時(shí),只需驗(yàn)證集合中是否有用戶Id和權(quán)限Code拼接的key即可

          算法相關(guān)

          判斷一個(gè)數(shù)字是否為快樂數(shù)字(重要程度:)

          leetcode第202題
          鏈接

          給定一個(gè)亂序數(shù)組和一個(gè)目標(biāo)數(shù)字 找到和為這個(gè)數(shù)字的兩個(gè)數(shù)字 時(shí)間復(fù)雜度是多少(重要程度:)

          leetcode第一題
          鏈接

          如何判斷一個(gè)鏈表有沒有環(huán)(重要程度:)

          用快慢指針

          刪除字符串中的空格 只留一個(gè)(重要程度:)

          這個(gè)比較簡(jiǎn)單。。。。

          二叉樹層序遍歷(重要程度:)

          利用隊(duì)列就可以了

          地鐵票價(jià)是如何計(jì)算的(重要程度:)

          不知道正確答案,感覺是圖的最短路徑算法相關(guān)的。

          Elasticsearch相關(guān)

          為什么要用Elasticsearch(重要程度:)


          其實(shí)對(duì)Es的了解還是比較少的,因?yàn)闆]做多久就去寫坑爹代理商了?。個(gè)人覺得項(xiàng)目中用Es的原因一是可以做分詞,二是Es中采用的是倒排索引所以性能比較好,三是Es是個(gè)分布式的搜索服務(wù),對(duì)各個(gè)節(jié)點(diǎn)的配置還是很簡(jiǎn)單方便的

          Elasticsearch中的數(shù)據(jù)來源是什么,如何做同步(重要程度:)


          數(shù)據(jù)是來自其他部門的數(shù)據(jù)庫,會(huì)在一開始寫python腳本做全量更新,之后利用RabbitMQ做增量更新,就是數(shù)據(jù)更改之后,數(shù)據(jù)提供方將更改的數(shù)據(jù)插入到指定消息隊(duì)列,由對(duì)應(yīng)的消費(fèi)者索引到Es中

          接上個(gè)問題,利用消息隊(duì)列是會(huì)對(duì)對(duì)方代碼造成侵入的,還有沒有別的方式(重要程度:)

          還可以讀MySQL的binlog

          發(fā)散思維的題

          以下題都是沒有正確答案的,不知道是想考思維,還是壓力面試,就只寫題目,不寫回答了。大家可以在面試之前準(zhǔn)備下自己的答案以免慌張。

          畫一下心中房樹人的關(guān)系(重要程度:)
          給你一塊地建房如何規(guī)劃(重要程度:)
          估計(jì)二號(hào)線有幾輛車在運(yùn)行(重要程度:)

          其他

          Thrift通信協(xié)議(重要程度:)

          這個(gè)問題被問了兩遍,然而現(xiàn)在還是不知道。。。什么東西都不能停留在只會(huì)用的階段啊~

          git相關(guān)(重要程度:)

          一些git相關(guān)的問題,比如如何做分支管理(git flow),rebase和merge的區(qū)別(merge操作會(huì)生成一個(gè)新的節(jié)點(diǎn))等等。

          如何學(xué)習(xí)一門新技術(shù)(重要程度:)

          google+官網(wǎng)+stackoverflow+github

          比較愛逛的網(wǎng)站和愛看的書(重要程度:)

          根據(jù)實(shí)際情況回答吧。。。

          了不了解微服務(wù)(重要程度:)

          簡(jiǎn)單了解過。。。
          參考資料:
          基于微服務(wù)的軟件架構(gòu)模式

          針對(duì)簡(jiǎn)歷中的項(xiàng)目問一些問題(重要程度:)

          就是根據(jù)簡(jiǎn)歷上的項(xiàng)目問一些東西,比如權(quán)限控制是怎么做的,有沒有碰到過比較難解決的問題之類的,不具體列舉了,只要簡(jiǎn)歷上的內(nèi)容是真實(shí)的基本都沒啥問題

          為什么要離職(重要程度:)

          被問了n遍,挺不好回答的一個(gè)問題,畢竟不算實(shí)習(xí)期工作還沒滿一年,這個(gè)時(shí)候跳槽很容易讓人覺得不安穩(wěn)。

          對(duì)公司還有什么問題(重要程度:)

          基本每輪面試結(jié)束都會(huì)問的一個(gè)問題,一開始也沒當(dāng)回事,直到有家公司居然掛在四面的這個(gè)問題上,我也是蠻醉的?,果然言多必失啊。

          在***公司最大的收獲是什么(重要程度:)


          對(duì)于我來說,覺得最大的收獲就是對(duì)企業(yè)級(jí)的應(yīng)用有了一個(gè)大致的了解,企業(yè)里的項(xiàng)目不像學(xué)校的課程作業(yè),只要jdbc連接數(shù)據(jù)庫完成功能就可以了,企業(yè)的項(xiàng)目要考慮很多東西,比如說為了提高可用性,要部署在多臺(tái)服務(wù)器上,用nginx做負(fù)載均衡,還有就是用緩存,異步之類來提高接口性能。然后,也是第一次接觸到SOA,這種面向服務(wù)的架構(gòu)。也了解到一個(gè)好的應(yīng)用,除了開發(fā)本身,一些自動(dòng)化發(fā)布系統(tǒng)和監(jiān)控系統(tǒng)也是必不可少的。

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                美女脱了裤子让男人捅 | 男男巨肉啪啪动漫3d | wwwwwwww黄 | 老师让我她我爽了好久视频 | 亚洲美女在线观看 |