乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      這里有一份面經(jīng),請(qǐng)查收(1)

       勇敢走不回頭 2016-08-06


      來(lái)源: 伯樂(lè)在線(xiàn)專(zhuān)欄作者 - 朱小廝 

      鏈接:http://blog./103105/

      點(diǎn)擊 → 了解如何加入專(zhuān)欄作者


      博主畢業(yè)快滿(mǎn)三年了,由于種種原因想換一份工作。學(xué)了 7 年計(jì)算機(jī)技術(shù),在目前的行業(yè)用到的技術(shù)不多,還是想去尋找一份互聯(lián)網(wǎng)行業(yè)的工作,這樣更能學(xué)以致用發(fā)揮自己的特長(zhǎng)。從上次更新博客到現(xiàn)在已經(jīng)三周左右了,這三周博客基本斷更了,現(xiàn)在找工作也基本收尾了,來(lái)聊一聊我所遇到的一些面試經(jīng)歷,希望給各位尋求新機(jī)會(huì)的小伙伴一個(gè)參考??偣裁嫱?8 家收了 7 個(gè) offer,應(yīng)該算是比較成功的吧。博文中主要還是聊一下技術(shù)相關(guān)的,博文中所涉及的公司均以代號(hào)標(biāo)志,不便透露細(xì)節(jié)。


      第一家面試的公司是一家互聯(lián)網(wǎng)創(chuàng)業(yè)公司,這里簡(jiǎn)稱(chēng) D,博主對(duì)這家公司的印象還是不錯(cuò)的,共面試了 5 輪,筆試一輪,技術(shù)面 3 輪,最后一輪是 HR 面。雖然公司總共員工只有小幾百人,但是做事比較專(zhuān)業(yè),很多大型的成熟公司也未必做得更好。


      首先說(shuō)說(shuō)筆試,很多一些小的公司,就是從網(wǎng)上題庫(kù)中拉點(diǎn)選擇題讓你做做,之后的面試和筆試題無(wú)關(guān),這里我遇到的筆試題是和第一輪技術(shù)面相關(guān)的,有點(diǎn)小套路。


      筆試題


      據(jù)博主的回憶,共有這么些題(都是簡(jiǎn)答題):


      1. 寫(xiě)出 java 中 synchronized 的使用方式。

      可以參考:Java 多線(xiàn)程知識(shí)小抄集 (一)


      2. Java 中設(shè)置最大堆和最小堆內(nèi)存的參數(shù)是什么?

      -Xmx -Xms


      3. volatile 的作用?

      兩點(diǎn):內(nèi)存可見(jiàn)性;防止指令重排序;


      4. 寫(xiě)一個(gè)二分查找算法


      5. 寫(xiě)一個(gè)你熟悉的設(shè)計(jì)模式,畫(huà)出 UML 圖,說(shuō)出此模式的作用以及寫(xiě)出此模式的主要方法。


      6. 一道設(shè)計(jì)題。(略)


      7. BeanFactory 和 ApplicationContext 的區(qū)別。(Sping 的容器可以分為兩種類(lèi)型 :1. BeanFactory:(org.springframework.beans.factory.BeanFactory 接口定義)是最簡(jiǎn)答的容器,提供了基本的 DI 支持。最常用的 BeanFactory 實(shí)現(xiàn)就是 XmlBeanFactory 類(lèi),它根據(jù) XML 文件中的定義加載 beans,該容器從 XML 文件讀取配置元數(shù)據(jù)并用它去創(chuàng)建一個(gè)完全配置的系統(tǒng)或應(yīng)用。 2. ApplicationContext 應(yīng)用上下文:org.springframework.context.ApplicationContext)基于 BeanFactory 之上構(gòu)建,并提供面向應(yīng)用的服務(wù)。)


      (第 4,5 題在下面會(huì)解釋?zhuān)?/p>


      第一輪技術(shù)面


      主要根據(jù)簡(jiǎn)歷以及筆試題進(jìn)行論述。


      先將筆試題,首先是寫(xiě)出一個(gè)熟悉的設(shè)計(jì)模式,那當(dāng)然寫(xiě)個(gè)單例咯,這個(gè)最簡(jiǎn)單嘛,主要是 UML 圖也特別好畫(huà)。詳細(xì)可以參考設(shè)計(jì)模式:?jiǎn)卫J剑⊿ingleton)。博主寫(xiě)的是內(nèi)部類(lèi)的寫(xiě)法:


      public class LazyInitHolderSingleton {  

          private LazyInitHolderSingleton() {  

          }  

       

          private static class SingletonHolder {  

                  private static final LazyInitHolderSingleton INSTANCE = new LazyInitHolderSingleton();  

          }  

       

          public static LazyInitHolderSingleton getInstance() {  

                  return SingletonHolder.INSTANCE;  

          }  

      }  


      這種寫(xiě)法是懶漢式線(xiàn)程安全的寫(xiě)法。


      面試官問(wèn)到一個(gè)問(wèn)題:為什么這種寫(xiě)法是線(xiàn)程安全的?


      那么這里就設(shè)計(jì)到一個(gè) JVM 加載的知識(shí):JVM 內(nèi)部機(jī)制可以保證在執(zhí)行類(lèi)構(gòu)造器 () 方法的時(shí)候是線(xiàn)程安全的,詳細(xì)可以參考博文: Java 虛擬機(jī)類(lèi)加載機(jī)制。


      這里博主還特意說(shuō)了虛擬機(jī)規(guī)范嚴(yán)格規(guī)定了有且只有 5 種情況(JDK7)必須對(duì)類(lèi)進(jìn)行初始化 (執(zhí)行類(lèi)構(gòu)造器 () 方法):


      1. 遇到 new,getstatic,putstatic,invokestatic 這失調(diào)字節(jié)碼指令時(shí),如果類(lèi)沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。生成這 4 條指令的最常見(jiàn)的 Java 代碼場(chǎng)景是:使用 new 關(guān)鍵字實(shí)例化對(duì)象的時(shí)候、讀取或設(shè)置一個(gè)類(lèi)的靜態(tài)字段(被 final 修飾、已在編譯器把結(jié)果放入常量池的靜態(tài)字段除外)的時(shí)候,以及調(diào)用一個(gè)類(lèi)的靜態(tài)方法的時(shí)候。

      2. 使用 java.lang.reflect 包的方法對(duì)類(lèi)進(jìn)行反射調(diào)用的時(shí)候,如果類(lèi)沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。

      3. 當(dāng)初始化一個(gè)類(lèi)的時(shí)候,如果發(fā)現(xiàn)其父類(lèi)還沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其父類(lèi)的初始化。

      4. 當(dāng)虛擬機(jī)啟動(dòng)時(shí),用戶(hù)需要指定一個(gè)要執(zhí)行的主類(lèi)(包含 main() 方法的那個(gè)類(lèi)),虛擬機(jī)會(huì)先初始化這個(gè)主類(lèi)。

      5. 當(dāng)使用 jdk1.7 動(dòng)態(tài)語(yǔ)言支持時(shí),如果一個(gè) java.lang.invoke.MethodHandle 實(shí)例最后的解析結(jié)果 REF_getstatic,REF_putstatic,REF_invokeStatic 的方法句柄,并且這個(gè)方法句柄所對(duì)應(yīng)的類(lèi)沒(méi)有進(jìn)行初始化,則需要先出觸發(fā)其初始化。


      尤其是第 5 點(diǎn),是個(gè)特別偏冷的知識(shí)點(diǎn),當(dāng)你記住這個(gè)的時(shí)候,可以給面試官留下一個(gè)很好的印象。在后面的博文中會(huì)經(jīng)常涉及這種冷知識(shí),可以讓你的面試過(guò)程添加幾處亮點(diǎn)。


      下面就是要說(shuō)明一下的二分查找法(首先確保被排序的數(shù)組有序),這里有兩種寫(xiě)法:遞歸和非遞歸的寫(xiě)法。博主憋了一個(gè)遞歸的算法,不過(guò)最好還是用非遞歸的寫(xiě)法。二分查找法還是很容易的,關(guān)鍵這里引申出了變種算法,譬如:給你一個(gè) key,找出這個(gè)數(shù)組中最左邊的 key,或者最右邊的 key。當(dāng)然還有其他變種算法,有興趣的朋友可以自行查找相關(guān)資料。


      接下去就根據(jù)簡(jiǎn)歷聊一聊項(xiàng)目和 Java 基礎(chǔ)了。下面稍微列舉一些問(wèn)題:


      1. Memcached 和 Redis 的區(qū)別? 參考:Redis 和 Memcached 的區(qū)別


      2. ActiveMQ 的集群配置方式有哪些?(基于共享文件,基于數(shù)據(jù)庫(kù),基于 Zookeeper 等)


      3. Mybatis 的一些知識(shí)點(diǎn)。(略)


      4. 虛擬機(jī)的類(lèi)加載機(jī)制。(加載 - 驗(yàn)證 - 準(zhǔn)備 - 解析 - 初始化,詳細(xì)可以參考 Java 虛擬機(jī)類(lèi)加載機(jī)制)


      5. 內(nèi)部類(lèi)相關(guān)知識(shí)點(diǎn)。


      6. 面向?qū)ο蟮脑O(shè)計(jì)原則?參考:面向?qū)ο蟮脑O(shè)計(jì)原則


      7. Spring Aop 的原理?動(dòng)態(tài)代理。


      8. Spring 常用的注解?


      9. NIO 的相關(guān)。參考:攻破 JAVA NIO 技術(shù)壁壘


      10. 數(shù)據(jù)庫(kù)優(yōu)化相關(guān)。(博主基本不直接接觸數(shù)據(jù)庫(kù),so 遇到此類(lèi)問(wèn)題直接 say: I don’t know. 有興趣的小伙伴可以自行查閱一些資料,譬如數(shù)據(jù)訪(fǎng)問(wèn)優(yōu)化漏斗法則。)


      11. linux 下查看文件有哪些方式?cat tac head tail more less nl vim vi gvim


      技術(shù)面二面


      約好的 10:00 電面,11:30 也沒(méi)來(lái),后來(lái)咨詢(xún)了 HR 才說(shuō)面試官出差去了。。。好吧,畢竟公司還在創(chuàng)業(yè)初期,管理上有疏忽可以理解。第二次約的 2 面同樣是 10:00,這次是 10:27 來(lái)的電話(huà)。額。。。這此的面試官好像是 CTO,面的也比較深一些:


      1. 談?wù)勀銓?duì) HashMap 的理解,怎么樣去保證線(xiàn)程安全?


      博主對(duì) HashMap 巴拉巴拉的一陣,可以參考:Java 集合框架:HashMap. 然后有三種方法可以保證 hashMap 的線(xiàn)程安全:換成 HashTable;用 synchronizedMap 包裝一下 HashMap; 換成 ConcurrentHashMap。然后補(bǔ)了一句 ConcurrentHashMap 是比較推崇的,然后就被問(wèn)了另一個(gè)問(wèn)題:說(shuō)一下 ConcurrentHashMap 的實(shí)現(xiàn)原理。然后解釋了一下,最后問(wèn)了個(gè)問(wèn)題:用 HashMap 怎么去實(shí)現(xiàn) ConcurrentHashMap?當(dāng)時(shí)想了一個(gè),覺(jué)得不 okay,想說(shuō)第二個(gè)方案就被制止了?,F(xiàn)在想想:把 HashMap 用 Collections.synchronizedMap() 包裝一下替換屌 Segment 即可。(如果不知所云,請(qǐng)閱讀一下 ConcurrentHashMap 的源碼先~~)


      補(bǔ)充:這里還問(wèn)了平常用了那些線(xiàn)程安全的隊(duì)列,包括:ConcurrentLinkedQueue, ConcurrentLinkedDeque 以及 BlockingQueue 系列。


      2.Java 集合中有哪些常用的類(lèi)?ArrayList 的上級(jí)(父類(lèi)或者接口)是什么,HashMap 的上級(jí)又是什么?


      常用的類(lèi):Map 系(HashMap,LinkedHashMap,TreeMap, WeakHashMap, EnumMap 等);List 系(ArrayList, LinkedList, Vector, Stack 等);Set 系(HashSet, LinkedHashSet, TreeSet); 工具類(lèi)(Collections,Arrays)。這里如果說(shuō)出來(lái)了,就必須對(duì)其十分了解,比如博主在另一家互聯(lián)網(wǎng)公司 W 的面試過(guò)程中就被問(wèn)到:你對(duì) java 集合了解有多少?博主說(shuō):我看過(guò)所有集合的源碼。然后就被問(wèn)到:Collections.sort() 里面的實(shí)現(xiàn)是什么排序算法?這個(gè)問(wèn)題確實(shí)夠冷門(mén)的!幸虧看過(guò),不然就被打臉了。。(TimSort, 加強(qiáng)型歸并排序)

      ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable. 然后 AbstractList 又繼承了 AbstractCollection. 然后 List 和 AbstractCollection 又都 implements 了 Collection.


      HashMap extends AbstractMap implements Map, Cloneable, Serializable.


      3.css 導(dǎo)入方式?


      這個(gè)只要 2 周不沒(méi)看過(guò)就會(huì)忘記。。博主當(dāng)時(shí)就忘記了。。超簡(jiǎn)單的題,但是又是最不起眼的題,細(xì)節(jié)做的不夠好。


      'stylesheet' type='text/css' href='css/head.css' />



      4.js 中的 ajax 操作的方式?這個(gè)寫(xiě)的太多了,所以答起來(lái)很 easy


      5. 一句話(huà)概括 NIO。博主說(shuō)了一通,包括 Reactor 模式神馬的。但是面試官說(shuō):你說(shuō)的也很對(duì),但是不是我想要的結(jié)果。斯巴達(dá)。。。


      6. 設(shè)計(jì)數(shù)據(jù)庫(kù)的一道題,比較簡(jiǎn)單,不贅述。


      7. 常用的 linux 命令?(這個(gè)被用了好多次了)


      cat tac head tail more less nl vim vi gvim

      date cal man shutdown poweroff reboot echo

      uname -r; mount; unmount; exit

      cd ls pwd mkdir cp scp rm mv

      touch file which whereis locate find tar unzip

      grep df top free kill killall

      ifconfig ping netstat telnet ftp

      passwd umask chrown chmod chgrp sudo ps who


      8.Spring IOC 的原理?答案:基于反射


      9. 數(shù)據(jù)庫(kù)事務(wù)隔離級(jí)別?

      Uncommit Read; Commit Read; Repeated Read; Serializable.


      10.memcached 與 Redis 的區(qū)別?


      技術(shù)三面


      之前說(shuō)過(guò)博主對(duì)數(shù)據(jù)庫(kù)相關(guān)的知識(shí),除了會(huì)寫(xiě) SQL 之外,其他的基本白癡。這次面試將近 40mins,差不多被問(wèn)了 30mins 的數(shù)據(jù)庫(kù)的知識(shí)。比如:數(shù)據(jù)庫(kù)優(yōu)化;訪(fǎng)問(wèn)多少條數(shù)據(jù),數(shù)據(jù)庫(kù)的反應(yīng)延遲是多少;表和視圖的區(qū)別。


      當(dāng)然還有一些其他的,譬如 Spring 中的注解在 xml 文件中怎么配置?


      context:annotation-config>



      面試過(guò)程中有兩種問(wèn)題比較難答:第一種,冷門(mén)知識(shí),比如 Colletions.sort() 用到什么排序算法?第二種就是上面的這種特別簡(jiǎn)單,用過(guò)的都知道,但是像這種在 Spring 配置文件中配置完之后就基本不動(dòng)了,所以特別容易遺忘。


      還有類(lèi)似的比如:Spring 中的自動(dòng)裝配怎么配置?


      context:componenet-scan>



      HR 面


      最后是 HR 面,這個(gè)最簡(jiǎn)單,只要言語(yǔ)不過(guò)激都是 okay 的,主要談?wù)勗谠瓉?lái)公司主要做什么,為什么要換份新工作,期望薪資神馬的。


      (ps: 談薪資是門(mén)藝術(shù),同樣兩個(gè)人,面試打分也是一樣的,但是薪資會(huì)談和不會(huì)談之間可能相差很多,這門(mén)藝術(shù)博主還在研究中,雖然有所收獲,但是還是不敢出來(lái)賣(mài)弄,等博主把人事六大塊之一的薪酬領(lǐng)悟之后再來(lái)探討探討。)


      總結(jié)


      博主總結(jié)幾個(gè)心得,僅供參考:


      面試第一要素:不要緊張,如果你真是技術(shù)族,而且對(duì)技術(shù)有所癡迷,一聊起技術(shù)來(lái)根本不會(huì)緊張。


      面試第二要素:要對(duì)簡(jiǎn)歷上的內(nèi)容了如指掌,包括原理源碼,如果略懂或者根本就是用了幾天就再也沒(méi)用過(guò)的技術(shù)就從簡(jiǎn)歷上刪掉吧,否則被面試官抓住不放就糟糕了。


      面試第三要素:學(xué)會(huì)引導(dǎo)面試,掌握主動(dòng)權(quán)。這門(mén)技藝需要多去混點(diǎn)面筋,然后自我優(yōu)化之后,一般都可以掌握。


      面試第四要素:做人要低調(diào)。面試你這個(gè)職位的人的技術(shù)肯定比這個(gè)職位高好幾個(gè) level, 不要覺(jué)得你回答了你非常熟悉的問(wèn)題就高調(diào)起來(lái),面試官隨時(shí)可以挖出一堆坑來(lái)讓你往里面跳。


      面試第五要素:要自信。有些面試官會(huì)對(duì)某些你回答完問(wèn)題之后會(huì)補(bǔ)一句:你確定?這時(shí)候就要看你自己了,有可能面試官再提醒你,也有可能再詐你。歸根結(jié)底還是要技術(shù)掌握的夠硬,底氣就足一些。


      參考資料:

      1. Java 多線(xiàn)程知識(shí)小抄集 (一)

      2. 設(shè)計(jì)模式:?jiǎn)卫J剑⊿ingleton)

      3. Java 虛擬機(jī)類(lèi)加載機(jī)制

      4. Redis 和 Memcached 的區(qū)別

      5. 面向?qū)ο蟮脑O(shè)計(jì)原則

      6. 攻破 JAVA NIO 技術(shù)壁壘

      7. Java 集合框架:HashMap


      專(zhuān)欄作者簡(jiǎn)介點(diǎn)擊 → 加入專(zhuān)欄作者 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多