①、邏輯
下列描述中唯一錯誤的是( )
下面選項內容中的A,B,C,D,E,F都是表示某個選項
A:本題有五個選項是正確的
B:B正確
C:D正確
D:DEF都正確
E:ABC中有一個錯誤
F:如果ABCDE都正確,那麼F也正確
答案:B
解析:首先理解題意:本題的條件和結論是互為因果的。破解這種迴圈論證題目的方法就是選擇某一個選項,假定它對或者錯,然後推理。並且,這裡的“某一個選項”常常可以根據題目找到推理鏈條中的薄弱環節。如本題的題幹說“描述中唯一錯誤”,而一共有A到F6個選項,馬上得知“6個選項中有5個是對的,1個是錯的”,這即表明“A:本題有五個選項是正確的”是對的。而“C:D正確”“D:DEF都正確”都涉及了D,不妨假定“C:D正確”是錯的.,從而完成推理。B錯誤,其餘都正確
②、演算法
個數約為50K的數列需要進行從小到大排序,數列特徵是基本逆序(多數數字從大到小,個別亂序),以下哪種排序演算法在事先不瞭解數列特徵的情況下效能最優(不考慮空間限制)。( )
A:氣泡排序
B:改進氣泡排序
C:選擇排序
D:快速排序
E:堆排序
F:插入排序
答案:E
解析:氣泡排序、選擇排序、插入排序的基本時間複雜度為O(N^2)。如果數列基本升(降)序,而題目要求升(降)序排列,則改進的氣泡排序可以近似為O(N)。基本有序的數列,常規的快速排序時間複雜度退化成O(N^2),而堆排序無論任何情況下的時間複雜度都是O(NlogN),因此,堆排序是最優的。
③、系統設計
下列方法中,( )不可以用來程式調優?
A:改善資料訪問方式以提升快取命中率
B:使用多執行緒的方式提高I/O密集型操作的效率
C:利用資料庫連線池替代直接的資料庫訪問
D:使用迭代替代遞迴
F:共享冗餘資料提高訪問效率
答案:B
解析:A、C、F都是從優化記憶體方面來進行程式調優;E可以提高CPU的訪問效率;普通的遞迴往往時間複雜度較高,使用迭代後能夠明顯改善(另外一種調優方式可以考慮帶快取的遞迴);而B中,多執行緒可以提高CPU的利用效率,但對於I/O密集型,瓶頸在於資料的獲取,所以B不正確。