筆試題 (二)

1. 兩個有序鏈表合併, 時間複雜度是多少? 什麼狀況下不 work ?php

當鏈表有環或鏈表有公共節點時不 workhtml

 

2. N 個數, 任意選出兩個數求其和, 結果的集合爲 S, S 中全部元素之和是多少 ?ios

樸素解法: 枚舉, o(n^2) 的複雜度算法

 

3. A,B 兩個有序數組, 從 A, B 各選出一個元素, 使其和爲 target, 給出時間複雜度.數據庫

樸素求法: 枚舉 A 中的元素, 到 B 中找 target - A[i], 時間複雜度爲 o(n*logn)編程

編程之美單個有序鏈表求和爲 target 的兩個元素的位置的變形題. 數組

設置兩個遊標 i, j 分別在 A[0], B[n-1] 處. A[i] + B[j] < target -> i ++. else j --;緩存

若是沒有找到, 再設 i,j 分別在 A[m-1], B[0] 處, 再遍歷一遍.服務器

時間複雜度爲 o(m+n)數據結構

 

4.  在一個 o(n*n) 的方塊中, 有一條環形路徑, 該路徑上的點標號爲 1, 其餘座標上的點標號爲 0, 求出環形路徑圍起來的面積.

Leetcode 原題, 使用 BFS, DFS 均可以. 

 

5. 進程之間的數據共享

a. 共享內存

b. 管道

c. 消息隊列

d. 信號量

e. 本地域 socket

 

6. 百度地圖中存在須要標註的不少點,而且這些點都須要帶描述,現將描述假設爲矩形,而且能夠位於點的左邊或右邊,但點不能移動,若是兩個點間的描述發生覆蓋,則須要將其中的一個點進行刪除

1.在一個區域內,請設計算法將有效的點進行輸出(儘量多的點)?

2.若是區域足夠大,點足夠多,算法會出現性能的瓶頸,請設計詳細的算法來講明並解決問題?

1. 默認描述在點的左邊, 若左邊不可放置則放到右邊, 若右邊也不可放置, 把該點刪除

2. 能夠對點附上權值, 優先擺放權值較高的點

 

7. 字符串 "alibaba" 共有幾種排列方式

7!/(3!*2!) = 840

 

8. 

#include <iostream>
#include <stdio.h>
using namespace std;

class Base {
public:
	int Bar(char x) {
		return (int)x;
	}

	virtual int Bar(int x) {
		return (2*x);
	}
};

class Derived : public Base {
public:
	int Bar(char x) {
		return (int)(-x);
	}

	int Bar(int x) {
		return (x/2);
	}
};


int main() {
	Derived Obj;
	Base *pObj = &Obj;

	printf("%d\n", pObj->Bar((char)(100)));
	printf("%d\n", pObj->Bar(100));
}

輸入 100, 50. As expected.

 

9. 下列那個不是線性表? (c)

A. 隊列 B. 棧 C. 關聯數組 D. 鏈表
線性表包括數組和鏈表, 以及由數組和鏈表組成的數據結構
 
10. 下列有關在一個處理器(processor)上跑兩個線程(thread)的說法中,正確的是

A. 一個線程能夠改變另外一個線程的程序計數器(program counter)

B. 一個線程既不能讀也不能寫另外一個線程的棧(stack)

C. 一個線程能夠讀寫另外一個線程的寄存器(register)

D. 以上都不對

 

11. 關於雙鏈表的搜索給定元素操做的說法正確的是

A. 從兩個方向搜索雙鏈表,比從一個方向搜索雙鏈表的速度慢

B. 從兩個方向搜索雙鏈表,比從一個方向搜索雙鏈表的方差要小

C. 從兩個方向搜索雙鏈表,比從一個方向搜索雙鏈錶速度要快

D. 以上說法都不正確

我的傾向於選擇 D, 單方向和雙方向是等價的

 

12. 對n個數字進行排序,期中兩兩不一樣的數字的個數爲k,n遠遠大於k,而n的取值區間長度超過了內存的大小,時間複雜度最小能夠是

A. O(nlogk) B. O(nk) C. O(n) D. O(nlogn)
考察的應該是堆排序, 選 A
 
13. 一臺指針式鐘錶的時鐘和分鐘的指向重合的時間間隔是 B 。

A. 720/13分鐘 B. 720/11分鐘 C. 60分鐘 D. 以上都不正確

 
一個小時多一點, 就會重合一次, 多出來那一點時間是時針走的角度.
假設, x 分鐘後時針分針相遇
那麼 分針走了 x/60*360  度, 時針走了 x/60*(360/12) 度 
因此 x/60*360 - 360 = x/60*(360/12), 解出 B
 
一天內, 時針分針會相遇多少次.
(24*60)/(720/11) + 1 次
 
14. 兩個大小不一樣的杯子R和S,R中裝着必定量的小米,S中裝着必定量的沙子。一名兒童用勺子從S中取出一勺沙子放入R,與小米混合以後,再從R中取出等體積的一勺混合物放入S。假定兩勺物品的體積相等,且R和S都沒有發生溢出。則如下說法中正確的是 。

A. R中的沙子和S中的小米同樣多

B. R中的沙子比S中的小米少

C. R中的沙子比S中的小米多

D. 沒法判斷

假設 R 中有小米 a 勺, S 中有小米 b 勺, 通過兩步倒騰, A 正確.

 

15. 假定拋出的硬幣落地以後正反兩面出現的機率分別是1/2。那麼拋10次和100次硬幣(分別稱爲T10和T100)相比,如下說法正確的是

A. T100出現一半的正面比T10出現一半正面的機率更大

B. T100前3次都是正面的機率比T10前3次都是正面的可能性大

C. T100正面次數的方差小於T10出現正面次數的方差

D. T100出現正面的比例比T10出現正面的比例在(0.45,0.55)區間中的可能性更大。

 

這種題目能夠直接把 10, 100 替換成 2, 3 來計算. 不用筆計算也知道 D 是正確的, 畢竟, 大數定理嘛

 

16. 某福彩機構推出了一款簡單的猜謎遊戲:遊戲玩家只需交納n元,賭紅或者黑。若是開獎結果與遊戲玩家所賭的顏色相同,則玩家除獲得交納的n元賭資外,還能夠得到n元做爲獎勵;不然該玩家失去交納的n元賭資。爲了遊戲公平,開獎是紅或者黑的機率均爲1/2。某遊戲玩家想出了一個玩法:開始出100元參與賭博,而後按照以下規則進行遊戲,若是輸掉,而且賭資充足,就把已經輸了的總錢數翻倍做爲賭資進行賭博;不然,就中止該遊戲。假定該機構賭資無限,而玩家的賭資比較有限,如下關於該玩家退出遊戲時的情形的評論中合理的是:

A. 該玩家的策略能夠保證遊戲結束時贏錢數的指望爲正數

B. 該福彩機構長期會賠錢

C. 該玩家會有必定機率在遊戲結束時輸錢,但輸得很少

D. 該玩家贏的可能性比輸的可能性大

 

很是有意思的一道題, 我之前也想過去賭場用這招, 但歷來沒計算過到底會輸仍是會贏, 不過以賭場的立場來看, 這種玩法他們確定考慮過了, 因此玩家輸的面應該是比較大.

爲了方便計算, 假設玩家的錢足夠玩 5 次

那麼會發生下面幾種狀況(0x001 表示第三場才贏):

0x1 機率 0.5 收益 n 投入 n

0x01 機率 (0.5)^2 收益 n 投入 2n

0x001 機率 (0.5)^3 收益 3n 投入 6n

0x0001 機率 (0.5)^4 收益 9n 投入 18n

0x00001 機率 (0.5)^5 收益 27n 投入 54n

0x00000 機率 (0.5)^5 收益 -81n 投入 54n

計算指望

發現指望是 0

由於玩家的錢是有上限的, 因此, 有可能輸

玩家要是輸錢的話, 那就輸慘了, 因此不知道選啥

 

17. 有16瓶水,其中只有一瓶水有毒,小白鼠喝一滴以後一小時會死。請問最少用

只小白鼠,在1小時內必定能夠找出至少14瓶無毒的水?

A. 1只

B. 3只

C. 4只

D. 16只

 

15 = 0x1111

假設用 4 個小白鼠, 分別爲 a b c d

對小白鼠的喝法編號

a b c d

0 0 0 1

0 0 1 0

...

1 1 1 1 

這樣, 小白鼠的死亡組合對應第幾瓶有毒.

 

18. 有一臺4核CPU的服務器,上面運行着1種在線服務。若是該在線服務處理一個請求在非獨佔IO上的等待時間和CPU計算上消耗的時間比爲2:1,假定IO帶寬充足,那麼至少開

個線程能最大化性能地使用該服務器?

不會.

 

19. 有一種語言稱爲lua,裏面的數字只有一種類型(number),其實是雙精度浮點數。沒有各類位數的整數,如32位、64位整數等。那麼關於該語言的說法錯誤的是

A. 該語言能夠用number 類型的變量做爲數組下標

B. 該語言能夠表示任意32位數字整數的數字ID

C. 該語言沒法實現32位數字整數的按位與、或、異或運算

D. 該語言能夠正常進行雙精度浮點數運算

不會.

 

20. 一個在線服務一般須要讀取存儲着海量數據的數據庫。爲了提升服務的處理速度,一般須要加cache(緩存)。如下場景中不合適使用cache的是

A. 數據庫中每條數據被訪問到的機率近似相等,且獨立

B. 使用了多線程機制的服務

C. 單條數據尺寸大小的數據

D. 有着大量訪問的服務

使用 cache 的潛在條件是數據的局部性, 假如每條數據被訪問到的機率相等, cache 的意義不大.

 

21. 有1023個兩兩不一樣的整數,取值範圍是1到1024,其按位異或的結果的取值範圍是 。

A. 0到1024

B. 0,1025到2047

C. 1到1024

D. 2到2048以前的所有偶數

 

枚舉 1~4, 1~5, 以爲 B 對

 

22. 七夕節n戀人(n>=2)圍成一圈舉行篝火晚會。晚會的規則是:男女相同,且每對戀人處在相鄰的位置上。請問有多少種不一樣的圈子?

A. (2n-1)!/2 B. 2(n-1)! C. 2n(n-1)! D. (2n)!

 

搜索了一下轉圈求排列數的問題, 找到一個比較好的解法.

大意是, 先固定一我的不動, 而後對其餘人全排列. 這道題, 前固定一對男女, 而後對其餘對男女全排列, 每對男女又有兩種坐法, 因此答案爲 (n-1)!*2^n

兩道擴展題

作題的時候關於n個元素圍成一圈有兩個題目,解法卻互相沖突:
例一:
(2005上海,第11題)某小組有四位男性和兩位女性,六人圍成一圈跳集體舞,不一樣排列方法有多少種?(    )  

A. 720 B. 60 C. 480 D. 120



解法:將六我的排成一圈,共有種方法。但注意到下圖顯示的六種狀況對應着相同的相對位置,應該將相同狀況別除。因此共有種方法。


例二:
用6枚不一樣的珍珠串一條項鍊,共有多少種不一樣的串法?(    )

A. 720 B. 60 C. 480 D. 120



解法:N枚不一樣的珍珠串一條項鍊,有串法;種;


我我的認爲除以n纔是對的,而不是除以2n。
請高手指教!!!

連接: http://bbs.qzzn.com/read.php?tid-14125136.html

相關文章
相關標籤/搜索