閱讀228 返回首頁    go 技術社區[雲棲]


我的麵試庫

算法題

公司現在的麵試對算法要求很高,不妨開個貼,整理一下,弄出幾個自己很熟悉又很有代表性的算法題,免得每次都要重新準備。

參考: https://blog.csdn.net/v_july_v/article/details/6543438


1. 有1000萬條查詢字符串記錄,找出top 10 出現次數最多查詢串。

用Hash Table 統計查詢字符串出現次數,時間複雜度是O(N),詳細:https://blog.csdn.net/v_july_v/article/details/6256463

用size為10的最大堆排序,找出Top 10,時間複雜度為N*logK,。

關於堆排序:

https://www.benfrederickson.com/2013/10/10/heap-visualization.html

https://en.wikipedia.org/wiki/Binary_heap


2. 對N個整數,尋找最小的K個整數 (例如輸入1,2,3,4,5,6,7和8這8個數字,則最小的4個數字為1,2,3和4。)

用部分排序+堆排序,https://blog.csdn.net/v_JULY_v/article/details/6370650


3. 設計一個算法,把一個含有N個元素的數組循環右移K位,要求時間複雜度為O(N)

常規做法,時間複雜度是O(N*K), 用逆排序可以做到O(N)  https://blog.csdn.net/v_JULY_v/article/details/6322882

對N個元素,用N/2的時間就可以逆排序,空間上隻需要一個額外存儲。思路是不需要一個一個元素向右移動,隻需要將數組的一半和另一半交換即可!

Reverse(int* arr, int b, int e)
{
     for(; b < e; b++, e--)
     {
          int temp = arr[e];
          arr[e] = arr[b];
          arr[b] = temp;
     }
}

或者

for(int i=0;i<=N/2;i++)

{      int t;

        t=a[N-i];

      a[N-i]=a[i];

      a[i]=t;

}

設計題

1. 如果讓你設計一個數據庫連接池,你將如何設計?



數據庫SQL

有兩張表,學生表 和 學生選課表, 寫一條SQL統計所有學生的選課數,注意可能存在一門課程都沒有選的情況。

考察點,left join 和 group by

完整SQL

select s.id, sum(case when c.name is not null then 1 else 0 end) from student as s left join course as c on s.id = c.studentId group by s.id


left join、right join、inner join的區別

left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 
right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄
inner join(等值連接) 隻返回兩個表中聯結字段相等的行

Java題

1. HashSet HashTable 和 HashMap 的區別

HashSet實現了Set接口,它不允許集合中有重複的值,要先確保對象重寫equals()和hashCode()方法

HashMap中怎樣處理hash衝突的? HashTable 是線程安全的,HashTable不接受null的key和value


2. web container中加載執行servlet的過程? web.xml中配置,然後init() --> get() / post() --> destroy(),其是不是線程安全的? volatile 這個關鍵字的作用(對變量進行同步操作)


3. String和StringBuffer的區別,衍生到immutable class,immutable的好處(線程安全,安全的參數傳入,減少內存消耗),如何實現immutable class.


4. JVM的類加載機製是怎樣的? 

  bootstrap classloader load 核心庫
                |
       extension classloader load jre/lib/ext
                |
       system classloader load -classpath 指定的jar包或類路徑

https://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html


5. Java的內存模型? 你碰過幾種outOfMemory的錯誤,都是由什麼原因造成的? permgen, heap space, thread stack

參考 https://www.cnblogs.com/windlaughing/archive/2013/05/27/3101650.html

設計題

什麼是觀察者模式


架構題

1. 什麼是RESTFul架構

2. 談談你理解的分布式係統架構

最後更新:2017-04-03 16:49:02

  上一篇:go ZED-Board從入門到精通(五):軟硬件協同設計
  下一篇:go JDBC 連接 Oracle 11g Release 2