作了一下某大廠的筆試的題目java
1. 一個表, visit(cookie_id, area1, area2, date)數據庫
給出各類查詢策略中, 哪種最好,每一條SQL語句大同小異, 幾乎看不出區別, 還有6,7個選項,同時字數很長。通常的SQL語句好像有根據查詢的嵌套順序來比較差別的,可是這道題反而沒有。反正蒙了一個。沒有數字可算,內心沒有底,應該證實了SQL語法可能會很大地影響查詢效率。編程
2. 安全
給了幾個條件,判斷你的名次。又是球賽的問題,考查你的推理能力。cookie
3.網絡
engineer的哈夫曼二進制編碼有幾位?多線程
哈夫曼編碼原來是能夠構建在一個單詞上的。忘了。18位。分佈式
4.函數
大頂二叉堆的插入後的調整。學過插入排序的話應該沒問題。學習
只是表示的方式是字符串從左到右。
5.
沒記住。
6.
考查數據挖掘(或者常見的特徵提取)。SVD分解成A=USVT後問相關的性質。
7.
iOS和Android。沒學過它們, 內存管理,內存循環引用, Address Santizer, 都是什麼?
8.
問了一個很複雜的文字遊戲,可是什麼內容都沒有。就是問p作了一個項目,分割成A, B,而後繞來繞去有矛盾了,要怎麼處理團隊關係。屬於那種毫無心義的只要看最後一句的題目。
9.
一個原子整數類。AtomicInteger, 話說我學了這麼久沒見過這個東西啊?
問測試代碼能實現線程安全嗎?
10.
亂七八糟的Java輸出,經典的A,B繼承和構造的問題。反正構造和析構都會輸出。
A* pa = new B;
delete pa;
B* pb = new B;
delete pb;
11.
STL容器。太簡單了。
12.
一個可怕的softmax-0, softmax-1公式。沒具體學過。用來估計機率的。
13.
14.
紙幣面值湊數問題。
15.
抽取球的機率題。
16.
C++。
17.
18.
數據庫的函數依賴和第三範式改寫。不難。
19.
Linux的kernel space和super space。
不多接觸,除了操做系統內容知道了一些。
20.
Java的回收機制。
附加題2道, 超過1小時。
第一題是開獎方案,用dfs就知道總方案數了。上交。
第二題是NLP,說實話不難,字符串長度<100000, 要過濾詞和統計詞頻,可是想到在40分鐘內徹底作出來應該不太可能,提早交卷。
不知道該公司有沒有籤保密協定,好像是沒有的。因此這樣也沒事吧。
此次筆試讓我回想起來的書和知識點:
《Unix網絡編程》, 《STL 源碼剖析》,《Java核心技術》,《數學之美》,《鳥哥的Linux私房菜》,
《數據庫系統概念》,還有那些沒有真正學習的:《iOS編程》,《第一行代碼》。
事實上考得確實不難,並且還有相似編譯原理這種問題沒有問,多是擔憂某些學校並無開設這門課吧。
其實多線程的題目挺有趣的,只是想了想目前遇到的問題並無太大的啓發性。我知道多線程在操做系統中的重要性,進而影響到分佈式系統、數據庫、安卓開發的學習,而有趣的是目前遇到的問題都是在JAVA語言下寫的。可能由於JAVA有原生多線程,寫法簡單。
剛剛看了一下一道題,是作的筆試。問:運行以下的代碼,最可能輸出什麼?
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class MutexLockTest { private AtomicInteger counter = new AtomicInteger(0); ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public int mutexBiz() { try { if (!readWriteLock.writeLock().tryLock()) { return -1; } return counter.getAndIncrement(); } finally { readWriteLock.writeLock().unlock(); } } public static void main(String[] args) throws InterruptedException { final MutexLockTest lockTest = new MutexLockTest(); for (int i = 0; i < 5; i++) { new Thread(new Runnable() { public void run() { try { System.out.print(lockTest.mutexBiz()); } catch (Exception e) { System.out.print("-2"); } } }).start(); } Thread.sleep(5000); } }
例如結果是 -21023 或者是10324 或者是-210-2-2
我沒辦法給出直接的答案。能夠想見這個東西應該是有一些套路的。可是顯然它的結果是不固定的。這個可能性對於實現互斥和同步來講有什麼用,我仍是不太清楚。