1. 程式人生 > >2018年面經,希望幫到大家【持續更新】

2018年面經,希望幫到大家【持續更新】

面試公司

按一些收集到的資訊加自己的經驗總結給大家

oracle

  • 筆試[網上]

    總體還是特別難的【全英文】在快速看題的過程中,如果有不會的單詞或則會產生歧義的段落,就會導致真正做題時間很短,大概一分鐘一道的感覺。

    • for(;;)可以塞方法進去嗎?可以

      for (int i = 0; i < 10; System.out.println("hello")) {
        i++;
      }
      
    • treeSet和linkedHashSet的區別

      簡略的說,以後再專門講:treeSet有序,按樹結構儲存,LinkedHashSet連結串列的形式儲存,用HashSet的形式

    • thread.run()

      .start()區別

      run()複寫掉用來放要執行的事情,當你直接執行run()時就直接跑起來了,如果你跑start()則啟動執行緒,而方法並不一定會馬上執行。【這個部分後面會開個專題講,Thread的原始碼還是有很多可以值得討論的地方】

    • volatile

      使得這個變數在各執行緒間是可視的,比起synchronize效能好很多,又能起到避免衝突的問題,打個比方,Thread原始碼中有threadStatus,設為volatile讓大家都能知道執行緒當前狀態是怎樣的。

      /*
       * Java thread status for tools, default indicates thread 'not yet started'
       */
      private volatile int threadStatus;
    • @Retention(RetentionPolicy.RUNTIME)

      決定標註的型別要執行怎樣的保留政策【或者說持久化】

    • has-a 與 is-a的關係

      正方形是圖形,正方形有四條邊

廣東電信

  • 筆試[網上]

    NAT

    Network Address Translation 專用網連線到Internet的路由器上加裝NAT軟體,當訪問網路時,由本機地址轉為全球IP地址

    • 解決IP不夠、保護主機不受侵害,因為訪問時是路由器上的全球IP
      • 靜態轉換【一對一】安全性較差,且對IP資源消耗大
      • 動態轉換【一對多】安全性好,能滿足多使用者需求
      • 埠多路複用【Port Address Translation PAT】改變資料包外出時埠,所有主機都共享一個IP,且隱藏主機
  • 覆蓋(重寫)【Overriding】

  • HDFS【Hadoop分散式檔案系統】 以Block為儲存單位,預設64MB

  • TELNET

    遠端終端協議,明文傳輸協議,應用層(協議)

    • 建立tcp連線
    • 將使用者名稱等等以(Net Virtual Terminal)形式傳送
    • 回收響應
    • 撤銷TCP連線
  • Linux常用命令

    • head 顯示檔案開頭 head -n 5 hello.log
    • less 對檔案、輸出等進行分頁顯示 history | less
    • more 一次顯示一屏文字 more -5 hello.log
    • nl 文字加上行號 nl hello.log
    • touch 修改檔案訪問時間【一直以為這是拿來建立檔案的?】
    • du 每個檔案磁碟用量 du --max-depth=1
    • free 空閒記憶體
    • iostat io狀態
    • vmstat 虛擬記憶體
    • df 檔案系統資訊 df -h【以人類形式顯示】
    • chmod 檔案模式修改
    • chown 檔案所有者修改
    • find 查詢 find . -regex
    • whereis 定位指令的二進位制程式bin,原始碼,man手冊等
    • which 在path變數中找到命令所在位置,返回第一個
    • pwd 列印絕對路徑
  • 語義網路

    用圖表示知識的結構化方式

  • 虛擬化 //TODO 待更

  • 判斷IP是不是為主機,子網劃分

    An Internet Protocol address (IP address) is a numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication. An IP address serves two principal functions: host or network interface identification and location addressing. 【from wiki】

> 簡單翻譯下就是ip地址是一串數字標識,用於標記裝置連入計算機網路,同時也用於標記地址。

同時這裡就只講解ipv4的概念,因為現在ipv6目前也就在校園網上活躍而已。

一共32位的ip地址,為了更好地利用它們,將它大致分為了兩部分網路標識部分以及主機標識部分。按照這個思路分法,就可以分出3種類型ABC地址,另外兩種型別DE就不分網路和主機標識了。

種類 網路部分 主機部分 地址範圍 私有地址 保留地址 優點 缺點
A 一個位元組【0開頭】 3個位元組 1.0.0.1~126.255.255.254 10.0.0.0~10.255.255.255 127.x.x.x 每個網路可以分配到1600多萬的計算機,畢竟三個位元組用於表示主機部分 但ip地址太少,也就126個,僅少部分政府部門和公司能用的起,apple之類的
B 兩個位元組【10開頭】 兩個位元組 128.0.0.1~191.255.255.254 172.16.0.0~172.31.255.255 169.254.x.x 網路數量增大了,且同時每個網路ip也能分配65534臺計算機 即便比A少了很多,但依然很少能有公司或組織用滿,對於平民使用者而言又太浪費了
C 三個位元組【110開頭】 一個位元組 192.0.0.1~223.255.255.254 192.168.0.0~192.168.255.255 ---- 網路ip多了 不過導致主機ip減少了,不過通過子網掩碼,這個問題其實現在也不大
D 不分網路主機【1110開頭】 不分 224.0.0.0-224.0.0.255【用於廣播】 239.0.0.0-239.255.255.255 【用於測試】 224.0.1.0-238.255.255.255【用於組播】 多點廣播地址用來一次定址一組計算機,標識共享同一協議的一組計算機 這個不太清楚
E 不分網路主機【11110開頭】 不分 240.0.0.0~255.255.255.254 用於測試、實驗用 不太清楚

子網掩碼

子網掩碼是一個32位地址,是與IP地址結合使用的一種技術。它的主要作用有兩個,一是用於遮蔽IP地址的一部分以區別網路標識和主機標識,並說明該IP地址是在區域網上,還是在遠端網上。二是用於將一個大的IP網路劃分為若干小的子網路。

面試題常有:A、B的IP是否在同一子網下【子網N:xxx】

R1=A&N=xxx;
R2=B&N=xxx;
若R1等於R2,則在同一子網

一智通(SaaS)

SpringBoot+SpringCloud+Docker

面試感觸:對基礎一定要牢,要有引導性地往自己熟悉的方面走,資料結構一定要了解,寧可說不會也不能說錯的東西。

  • Java特性:繼承,多型,抽象,封裝。

    • 繼承:父子關係,體現is-a關係,節省不必要的重複程式碼。
    • 多型:一個介面,有不同的實現方式。(過載重寫)

      但是需要滿足繼承,複寫,父類引用指向子類物件。

    • 抽象: 通過把類的共同特性抽象出來,減少開發時間。
    • 封裝: 類的體現,我們通過物件的形式去呼叫它的行為(方法),而不必知道它的具體實現。
  • 棧,堆,圖,佇列····資料結構一定要紮實。

    • 棧:後入先出,保證出去的永遠是最新的
    • 堆:也可命名為優先佇列,是一棵樹的陣列體現,保證每次提取的是佇列的第一個(最大,最小or其他設定)
  • SQL語句掌握

  • 應用釋出,dependency如何分開war還是jar

  • springCloud

  • Docker

高新興

  • hashmap與concurrentHashMap

    注意concurretntHashMap的兩個版本,segement以及基於CAX方式的大陣列Node<k,v>

  • redis與資料庫如何實現一致化

  • restfult service

    就是@service介面

  • 多執行緒

  • 爬蟲如何實現

  • 死鎖

  • Java專案