1、用C語言實(shí)現(xiàn)一個(gè)revert函數(shù),它的功能是將輸入的字符串在原串上倒序后返回。
2、用C語言實(shí)現(xiàn)函數(shù)void * memmove(void *dest, const void *src, size_t n)。memmove
函數(shù)的功能是拷貝src所指的內(nèi)存內(nèi)容前n個(gè)字節(jié)到dest所指的地址上。
分析:由于可以把任何類型的指針賦給void類型的指針,這個(gè)函數(shù)主要是實(shí)現(xiàn)各種數(shù)據(jù)類型的拷貝。
3、有一根27厘米的細(xì)木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這五個(gè)位置上各有一只螞蟻。
木桿很細(xì),不能同時(shí)通過一只螞蟻。開始時(shí),螞蟻的頭朝左還是朝右是任意的,它們只會(huì)朝前走或調(diào)頭,但不會(huì)后退。
當(dāng)任意兩只螞蟻碰頭時(shí),兩只螞蟻會(huì)同時(shí)調(diào)頭朝反方向走。假設(shè)螞蟻們每秒鐘可以走一厘米的距離。
編寫程序,求所有螞蟻都離開木桿的最小時(shí)間和最大時(shí)間。
4、給定一個(gè)存放整數(shù)的數(shù)組,重新排列數(shù)組使得數(shù)組左邊為奇數(shù),右邊為偶數(shù)。
要求:空間復(fù)雜度O(1),時(shí)間復(fù)雜度為O(n)。
5、在一維坐標(biāo)軸上有n個(gè)區(qū)間段,求重合區(qū)間最長的兩個(gè)區(qū)間段。
6、系統(tǒng)有很多任務(wù),任務(wù)之間有依賴,比如B依賴于A,則A執(zhí)行完后B才能執(zhí)行
(1)不考慮系統(tǒng)并行性,設(shè)計(jì)一個(gè)函數(shù)(Task *Ptask,int Task_num)不考慮并行度,最快的方法完成所有任務(wù)。
(2)考慮并行度,怎么設(shè)計(jì)
typedefstruct{intID;int*child;intchild_num;}Task;
提供的函數(shù):
bool doTask(int taskID);無阻塞的運(yùn)行一個(gè)任務(wù);
int waitTask(int timeout);返回運(yùn)行完成的任務(wù)id,如果沒有則返回-1;
bool killTask(int taskID);殺死進(jìn)程
7、解釋下面ptr含義和不同
double* ptr = &value;
//ptr是一個(gè)指向double類型的指針,ptr的值可以改變,ptr所指向的value的值也可以改變
const double* ptr = &value
//ptr是一個(gè)指向const double類型的指針,ptr的值可以改變,ptr所指向的value的值不可以改變
double* const ptr=&value
//ptr是一個(gè)指向double類型的指針,ptr的值不可以改變,ptr所指向的value的值可以改變
const double* const ptr=&value
//ptr是一個(gè)指向const double類型的指針,ptr的值不可以改變,ptr所指向的value的值也不可以改變
8、去掉const屬性,例: ?const double value = 0.0f; ?double* ptr = NULL;怎么才能讓ptr指向value?
強(qiáng)制類型轉(zhuǎn)換,去掉const屬性,如ptr = (&value);
http://topic.csdn.net/u/201109 ... 09169
9、一個(gè)數(shù)組保存了N個(gè)結(jié)構(gòu),每個(gè)結(jié)構(gòu)保存了一個(gè)坐標(biāo),結(jié)構(gòu)間的坐標(biāo)都不相同,請問如何找到指定坐標(biāo)的結(jié)構(gòu)(除了遍歷整個(gè)數(shù)組,是否有更好的辦法)?(要么預(yù)先排序,二分查找。要么哈希。hash的話,坐標(biāo)(x,y)你可以當(dāng)做一個(gè)2位數(shù),寫一個(gè)哈希函數(shù),把(x,y)直接轉(zhuǎn)成“(x,y)”作為key,默認(rèn)用string比較。或如Edward Lee所說,將坐標(biāo)(x, y)作為 Hash 中的 key。例如(m, n),通過 (m,n) 和 (n, m) 兩次查找看是否在 HashMap 中。也可以在保存時(shí)就規(guī)定 (x, y) , x < y ,在插入之前做個(gè)判斷。)
10、百度最新面試題:現(xiàn)在有1千萬個(gè)隨機(jī)數(shù),隨機(jī)數(shù)的范圍在1到1億之間。現(xiàn)在要求寫出一種算法,將1到1億之間沒有在隨機(jī)數(shù)中的數(shù)求出來。
(編程珠璣上有此類似的一題,如果有足夠的內(nèi)存的話可以用位圖法,即開一個(gè)1億位的bitset,內(nèi)存為100m/8== 12.5m, 然后如果一個(gè)數(shù)有出現(xiàn),對應(yīng)的bitset上標(biāo)記為1,最后統(tǒng)計(jì)bitset上為0的即可。)
11、linux/unix遠(yuǎn)程登陸都用到了ssh服務(wù),當(dāng)網(wǎng)絡(luò)出現(xiàn)錯(cuò)誤時(shí)服務(wù)會(huì)中斷,linux/unix端的程序會(huì)停止。為什么會(huì)這樣?說下ssh的原理,解釋中斷的原理。
12、利用互斥量和條件變量設(shè)計(jì)一個(gè)消息隊(duì)列,具有以下功能:
1). 創(chuàng)建消息隊(duì)列(消息中所含的元素)
2). 消息隊(duì)列中插入消息
3). 取出一個(gè)消息(阻塞方式)
4). 取出第一消息(非阻塞方式)
13、對已排好序的數(shù)組A,一般來說可用二分查找可以很快找到。現(xiàn)有一特殊數(shù)組A[],它是循環(huán)遞增的,如A[]={ 17 19 20 25 1 4 7 9},試在這樣的數(shù)組中找一元素x,看看是否存在。
請寫出你的算法,必要時(shí)可寫偽代碼,并分析其空間、時(shí)間復(fù)雜度。
14、動(dòng)態(tài)鏈接庫與靜態(tài)鏈接庫的區(qū)別
靜態(tài)鏈接庫是.lib格式的文件,一般在工程的設(shè)置界面加入工程中,程序編譯時(shí)會(huì)把lib文件的代碼加入你的程序中因此會(huì)增加代碼大小,你的程序一運(yùn)行l(wèi)ib代碼強(qiáng)制被裝入你程序的運(yùn)行空間,不能手動(dòng)移除lib代碼。
動(dòng)態(tài)鏈接庫是程序運(yùn)行時(shí)動(dòng)態(tài)裝入內(nèi)存的模塊,格式*.dll,在程序運(yùn)行時(shí)可以隨意加載和移除,節(jié)省內(nèi)存空間。
在大型的軟件項(xiàng)目中一般要實(shí)現(xiàn)很多功能,如果把所有單獨(dú)的功能寫成一個(gè)個(gè)lib文件的話,程序運(yùn)行的時(shí)候要占用很大的內(nèi)存空間,導(dǎo)致運(yùn)行緩慢;但是如果將功能寫成dll文件,就可以在用到該功能的時(shí)候調(diào)用功能對應(yīng)的dll文件,不用這個(gè)功能時(shí)將dll文件移除內(nèi)存,這樣可以節(jié)省內(nèi)存空間。)
15、指針與引用的區(qū)別
相同點(diǎn):1. 都是地址的概念;
指針指向一塊內(nèi)存,它的內(nèi)容是所指內(nèi)存的地址;引用是某塊內(nèi)存的別名。
區(qū)別:
1). 指針是一個(gè)實(shí)體,而引用僅是個(gè)別名;
2). 引用使用時(shí)無需解引用(*),指針需要解引用;
3). 引用只能在定義時(shí)被初始化一次,之后不可變;指針可變;
4). 引用沒有 const,指針有 const;
5). 引用不能為空,指針可以為空;
6). “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或?qū)ο蟮牡刂?的大小;
7). 指針和引用的自增(++)運(yùn)算意義不一樣;
8).從內(nèi)存分配上看:程序?yàn)橹羔樧兞糠峙鋬?nèi)存區(qū)域,而引用不需要分配內(nèi)存區(qū)域。)
16、進(jìn)程與線程的區(qū)別
①從概念上:
進(jìn)程:一個(gè)程序?qū)σ粋€(gè)數(shù)據(jù)集的動(dòng)態(tài)執(zhí)行過程,是分配資源的基本單位。
線程:一個(gè)進(jìn)程內(nèi)的基本調(diào)度單位。
線程的劃分尺度小于進(jìn)程,一個(gè)進(jìn)程包含一個(gè)或者更多的線程。
②從執(zhí)行過程中來看:
進(jìn)程:擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而提高了應(yīng)用程序的運(yùn)行效率。
線程:每一個(gè)獨(dú)立的線程,都有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列、和程序的出口。但是線程不能夠獨(dú)立的執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
③從邏輯角度來看:(重要區(qū)別)
多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但是,操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理及資源分配。)
17、函數(shù)調(diào)用入棧出棧的過程。
18、c++對象模型與虛表。
19、海量數(shù)據(jù)處理,以及如何解決Hash沖突等問題。
20、系統(tǒng)設(shè)計(jì),概率算法。
21、判斷一個(gè)數(shù)的所有因數(shù)的個(gè)數(shù)是偶數(shù)還是奇數(shù)(只需要你判斷因數(shù)的個(gè)數(shù)是偶數(shù)個(gè)還是奇數(shù)個(gè),那么可以這么做@濱湖&&土豆:那只在計(jì)算質(zhì)因數(shù)的過程中統(tǒng)計(jì)一下當(dāng)前質(zhì)因數(shù)出現(xiàn)的次數(shù),如果出現(xiàn)奇數(shù)次則結(jié)果為偶,然后可以立即返回;如果每個(gè)質(zhì)因數(shù)的次數(shù)都是偶數(shù),那么結(jié)果為奇。如果該數(shù)是平方數(shù) 結(jié)果就為奇? 否則就為偶了)。
22、寫一個(gè)C的函數(shù),輸入整數(shù)N,輸出整數(shù)M,M滿足:M是2的n次方,且是不大于N中最大的2的n次方。例如,輸入4,5,6,7,都是輸出4 。
23、C++中虛擬函數(shù)的實(shí)現(xiàn)機(jī)制。
24、寫出選擇排序的代碼及快速排序的算法。
25、你認(rèn)為什么排序算法最好?
26、tcp/ip的那幾層協(xié)議,IP是否是可靠的?為什么?
27、進(jìn)程和線程的區(qū)別和聯(lián)系,什么情況下用多線程,什么時(shí)候用多進(jìn)程?
28、指針數(shù)組和數(shù)組指針的區(qū)別。
29、查找單鏈表的中間結(jié)點(diǎn)。
30、最近在實(shí)驗(yàn)室課題研究或工作中遇到的技術(shù)難點(diǎn),怎么解決的?
31、sizeof和strlen的區(qū)別。
32、malloc-free和new-delete的區(qū)別
33、大數(shù)據(jù)量中找中位數(shù)。
34、堆和棧的區(qū)別。
35、描述函數(shù)調(diào)用的整個(gè)過程。
36、在一個(gè)兩維平面上有三個(gè)不在一條直線上的點(diǎn)。請問能夠作出幾條與這些點(diǎn)距離相同的線?
37、假設(shè)有一臺(tái)迷你計(jì)算機(jī),1KB的內(nèi)存,1MHZ的cpu,已知該計(jì)算機(jī)執(zhí)行的程序可出現(xiàn)確定性終止(非死循環(huán)),問如何求得這臺(tái)計(jì)算機(jī)上程序運(yùn)行的最長時(shí)間,可以做出任何大膽的假設(shè)。
38、C++ STL里面的vector的實(shí)現(xiàn)機(jī)制,
1).當(dāng)調(diào)用push_back成員函數(shù)時(shí),怎么實(shí)現(xiàn)?
(粗略的說@owen,內(nèi)存足則直接 placement new構(gòu)造對象,否則擴(kuò)充內(nèi)存,轉(zhuǎn)移對象,新對象placement new上去。具體的參見此文:http://blog.csdn.net/v_july_v/ ... 81522)
2).當(dāng)調(diào)用clear成員函數(shù)時(shí),做什么操作,如果要釋放內(nèi)存該怎么做。
(調(diào)用析構(gòu)函數(shù),內(nèi)存不釋放。 clear沒有釋放內(nèi)存,只是將數(shù)組中的元素置為空了,釋放內(nèi)存需要delete。)
39、函數(shù)foo找錯(cuò),該函數(shù)的作用是將一個(gè)字符串中的a-z的字母的頻數(shù)找出來
voidfoo(chara[100],intcnt[256]){memset(cnt,0,sizeof(cnt));while(*a!='\0'){++cnt[*a];++a;}for(charc='a';c<='z';++c){printf("%c:%d\n",c,cnt[c]);}}intmain(){chara[100]="百度abc";intcnt[256];foo(a,cnt);return0;}
40、設(shè)子數(shù)組A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1)。試設(shè)計(jì)一個(gè)合并這2個(gè)子數(shù)組為排好序的數(shù)組A[0:N-1]的算法。要求算法在最壞情況下所用的計(jì)算時(shí)間為O(N),只用到O(1)的輔助空間。
41、一個(gè)單詞如果交換其所含字母順序,得到的單詞稱為兄弟單詞,例如mary和army是兄弟單詞,即所含字母是一樣的,只是字母順序不同,用戶輸入一個(gè)單詞,要求在一個(gè)字典中找出該單詞的所有兄弟單詞,并輸出。給出相應(yīng)的數(shù)據(jù)結(jié)構(gòu)及算法。要求時(shí)間和空間復(fù)雜度盡可能低
目前思想:
struct{chardata;intn};
根據(jù)數(shù)學(xué)定理:任何一個(gè)大于1的自然數(shù)N,都可以唯一分解成有限個(gè)質(zhì)數(shù)的乘積 N=(P_1^a1)*(P_2^a2)......(P_n^an) , 這里P_1
例如
a=2 b=3 c=5 d=7 e=11...
f(abcd)=2*3*5*7=210
然后字典里找乘積210的位數(shù)相同的一定是這5個(gè)字母組合的單詞就是兄弟單詞?。
42、設(shè)rand(s,t)返回[s,t]之間的隨機(jī)小數(shù),利用該函數(shù)在一個(gè)半徑為R的圓內(nèi)找隨機(jī)n個(gè)點(diǎn),并給出時(shí)間復(fù)雜度分析。
43、為分析用戶行為,系統(tǒng)常需存儲(chǔ)用戶的一些query,但因query非常多,故系統(tǒng)不能全存,設(shè)系統(tǒng)每天只存m個(gè)query,現(xiàn)設(shè)計(jì)一個(gè)算法,對用戶請求的query進(jìn)行隨機(jī)選擇m個(gè),請給一個(gè)方案,使得每個(gè)query被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用戶的總請求量。
44、C++ STL中vector的相關(guān)問題:
(1)、調(diào)用push_back時(shí),其內(nèi)部的內(nèi)存分配是如何進(jìn)行的?
(2)、調(diào)用clear時(shí),內(nèi)部是如何具體實(shí)現(xiàn)的?若想將其內(nèi)存釋放,該如何操作?
45、正常用戶端每分鐘最多發(fā)一個(gè)請求至服務(wù)端,服務(wù)端需做一個(gè)異常客戶端行為的過濾系統(tǒng),設(shè)服務(wù)器在某一刻收到客戶端A的一個(gè)請求,則1分鐘內(nèi)的客戶端任何其它請求都需要被過濾,現(xiàn)知每一客戶端都有一個(gè)IPv6地址可作為其ID,客戶端個(gè)數(shù)太多,以至于無法全部放到單臺(tái)服務(wù)器的內(nèi)存hash表中,現(xiàn)需簡單設(shè)計(jì)一個(gè)系統(tǒng),使用支持高效的過濾,可使用多臺(tái)機(jī)器,但要求使用的機(jī)器越少越好,請將關(guān)鍵的設(shè)計(jì)和思想用圖表和代碼表現(xiàn)出來。
46、如p([1,2,3])輸出:
[123]、[132]、[213]、[231]、[321]、[323]
求一個(gè)組合函數(shù)
如p([1,2,3])輸出:
[1]、[2]、[3]、[1,2]、[2,3]、[1,3]、[1,2,3]
這兩問可以用偽代碼。
47、如何快速訪問ipv6地址呢?ipv6地址如何存放?
48、正常用戶端每分鐘最多發(fā)一個(gè)請求至服務(wù)端,服務(wù)端需做一個(gè)異常客戶端行為的過濾系統(tǒng),設(shè)服務(wù)器在某一刻收到客戶端A的一個(gè)請求,則1分鐘內(nèi)的客戶端任何其它請求都需要被過濾,現(xiàn)知每一客戶端都有一個(gè)IPv6地址可作為其ID,客戶端個(gè)數(shù)太多,以至于無法全部放到單臺(tái)服務(wù)器的內(nèi)存hash表中,現(xiàn)需簡單設(shè)計(jì)一個(gè)系統(tǒng),使用支持高效的過濾,可使用多臺(tái)機(jī)器,但要求使用的機(jī)器越少越好,請將關(guān)鍵的設(shè)計(jì)和思想用圖表和代碼表現(xiàn)出來。
49、一個(gè)單詞單詞字母交換,可得另一個(gè)單詞,如army->mary,成為兄弟單詞。提供一個(gè)單詞,在字典中找到它的兄弟。描述數(shù)據(jù)結(jié)構(gòu)和查詢過程。
評點(diǎn):同去年9月份的一道題,見此文第3題:http://blog.csdn.net/v_july_v/ ... 03368。
50、線程和進(jìn)程區(qū)別和聯(lián)系。什么是“線程安全”
51、C和C++怎樣分配和釋放內(nèi)存,區(qū)別是什么
52、一個(gè)url指向的頁面里面有另一個(gè)url,最終有一個(gè)url指向之前出現(xiàn)過的url或空,這兩種情形都定義為null。這樣構(gòu)成一個(gè)單鏈表。給兩條這樣單鏈表,判斷里面是否存在同樣的url。url以億級計(jì),資源不足以hash。
53、數(shù)組al[0,mid-1] 和 al[mid,num-1],都分別有序。將其merge成有序數(shù)組al[0,num-1],要求空間復(fù)雜度O(1)。
54、百度搜索框的suggestion,比如輸入“北京”,搜索框下面會(huì)以北京為前綴,展示“北京愛情故事”、“北京公交”、“北京醫(yī)院”等等搜索詞,輸入“結(jié)構(gòu)之”,會(huì)提示“結(jié)構(gòu)之法”,“結(jié)構(gòu)之法 算法之道”等搜索詞。
請問,如何設(shè)計(jì)此系統(tǒng),使得空間和時(shí)間復(fù)雜度盡量低。
評點(diǎn):①直接上Trie樹「Trie樹的介紹見:從Trie樹(字典樹)談到后綴樹」 + ?TOP K「hashmap+堆,hashmap+堆 統(tǒng)計(jì)出如10個(gè)近似的熱詞,也就是說,只存與關(guān)鍵詞近似的比如10個(gè)熱詞,詳細(xì)方法可參看此文第2個(gè)題的講解:http://blog.csdn.net/v_july_v/ ... 82693」?
②or Double-array trie tree?同時(shí),StackOverflow上也有兩個(gè)討論帖子:http://stackoverflow.com/quest ... plete,http://stackoverflow.com/quest ... e-c-c。
③此外,這里有一篇關(guān)于“拼寫錯(cuò)誤檢查”問題的介紹,或許對你有所啟示:http://blog.afterthedeadline.c ... ions/。。
55、不使用隨機(jī)數(shù)的洗牌算法,詳情:http://topic.csdn.net/u/201208 ... .html。
56、公司組織一次羽毛球比賽,采用淘汰制,假設(shè)公司共有1001人,如果要評出“公司羽毛球第一高手”的稱號,至少需要進(jìn)行多少場比賽?請簡述設(shè)計(jì)過程,并編寫代碼模擬比賽過程(語言不限,可以使用偽代碼)。
57、一百個(gè)燈泡排成一排,第一輪將所有燈泡打開,第二輪每隔一個(gè)燈泡關(guān)掉一個(gè),即排在偶數(shù)的燈泡都被關(guān)掉,第三輪每隔兩個(gè)燈泡,將開著的燈泡關(guān)掉,關(guān)掉的燈泡打開,以此類推,第100輪結(jié)束的時(shí)候,還有幾盞燈泡亮著?
58、假定有20個(gè)有序數(shù)組,每個(gè)數(shù)組中有500個(gè)數(shù)字,數(shù)字類型32位uint數(shù)值,降序排列,現(xiàn)在需要取出這10000個(gè)數(shù)字中最大的500個(gè),怎么做?
59、手機(jī)上通常采用九鍵鍵盤輸入,即:1—9個(gè)數(shù)字鍵分別對應(yīng)一定的英文字母(如:2對應(yīng)ABC,3對應(yīng)DEF,……,9對應(yīng)WXYZ)。因此,用戶可以方便的輸入中文內(nèi)容,比如,用戶輸入“926”,可以對應(yīng)“WXYZ”,“ABC”和“MNO”的一系列組合“WAN”,“YAN”,“ZAO”等,這些對應(yīng)“萬”,“嚴(yán)”,“早”等漢字的中文拼音。
要求:
現(xiàn)在我們把這樣的輸入方式應(yīng)用在我們的手機(jī)聯(lián)系人查找功能上,有一個(gè)聯(lián)系人列表UserList,記錄了(姓名,手機(jī)號)這樣的組合,通過輸入的數(shù)組字符串NumStr,按照下面的規(guī)則把對應(yīng)的聯(lián)系人查找出來,返回一個(gè)ResultList。
規(guī)則:
1).手機(jī)號能連續(xù)部分匹配輸入的數(shù)字字符串NumStr,如:輸入NumStr=926,則手機(jī)號為13926811111會(huì)被查找出來。
2).聯(lián)系人姓名中的漢字轉(zhuǎn)化成拼音后能夠連續(xù)匹配輸入數(shù)字字符串NumStr對應(yīng)的英文字母組合,如:輸入NumStr=926,則聯(lián)系人“王二”,“萬事通”,“李艷”會(huì)被查找出來,因?yàn)椤巴醵钡摹巴酢钡钠匆簟癢ANG”中含有“WAN”,和“926”能匹配。
輸入:聯(lián)系人列表UserList;漢字拼音映射表Dict;數(shù)字字符串NumStr。
輸出:符合規(guī)則的聯(lián)系人列表ResultList。
60、10億個(gè)int型整數(shù),如何找出重復(fù)出現(xiàn)的數(shù)字。
61、有2G的一個(gè)文本文檔,文件每行存儲(chǔ)的是一個(gè)句子,每個(gè)單詞是用空格隔開的。問:輸入一個(gè)句子,如何找到和它最相似的前10個(gè)句子。(提示:可用倒排文檔)。
62、一個(gè)處理器最多能處理m個(gè)任務(wù)。現(xiàn)在有n個(gè)任務(wù)需要完成,每個(gè)任務(wù)都有自己完成所需的時(shí)間。此外每個(gè)任務(wù)之間有依賴性,比如任務(wù)A開始執(zhí)行的前提是任務(wù)B必須完成。設(shè)計(jì)一個(gè)調(diào)度算法,使得這n這任務(wù)的完成時(shí)間最小。
63、有一個(gè)排序二叉樹,數(shù)據(jù)類型是int型,如何找出中間大的元素。
64、一個(gè)N個(gè)元素的整形數(shù)組,如何找出前K個(gè)最大的元素。
65、給定一個(gè)凸四邊形,如何判斷一個(gè)點(diǎn)在這個(gè)平面上。
點(diǎn)評:本題的討論及參考答案請見這:http://www.51nod.com/question/ ... 3D669。
66、堆和棧的區(qū)別。
67、問如何數(shù)出自己頭上的頭發(fā)。
68、給定一數(shù)組,輸出滿足2a=b(a,b代表數(shù)組中的數(shù))的數(shù)對,要求時(shí)間復(fù)雜度盡量低。
69、搜索引擎多線程中每個(gè)線程占用多少內(nèi)存?如果搜索引擎存儲(chǔ)網(wǎng)頁內(nèi)存占用太大怎么解決?
70、有很多url,例如*.baidu.com,*.sina.com ......
現(xiàn)在給你一個(gè)sports.sina.com 快速匹配出是*.sina.com。點(diǎn)評:老題,此前blog內(nèi)曾整理過。
71、找出字符串的編輯距離,即把一個(gè)字符串s1最少經(jīng)過多少步操作變成編程字符串s2,操作有三種,添加一個(gè)字符,刪除一個(gè)字符,修改一個(gè)字符(只要聽過編輯距離,知道往動(dòng)態(tài)規(guī)劃上想,很快就可以找到解法)。
點(diǎn)評:請看鏈接:http://blog.csdn.net/Lost_Pain ... 57334。
72、編程實(shí)現(xiàn)memcopy,注意考慮目標(biāo)內(nèi)存空間和源空間重疊的時(shí)候。
73、實(shí)現(xiàn)簡單的一個(gè)查找二叉樹的深度的函數(shù)。
74、進(jìn)程和線程的區(qū)別。
75、一個(gè)有序數(shù)組(從小到大排列),數(shù)組中的數(shù)據(jù)有正有負(fù),求這個(gè)數(shù)組中的最小絕對值。
76、鏈表倒數(shù)第n個(gè)元素。
77、有一個(gè)函數(shù)fun能返回0和1兩個(gè)值,返回0和1的概率都是1/2,問怎么利用這個(gè)函數(shù)得到另一個(gè)函數(shù)fun2,使fun2也只能返回0和1,且返回0的概率為1/4,返回1的概率為3/4。(如果返回0的概率為0.3而返回1的概率為0.7呢)。
78、有8個(gè)球,其中有7個(gè)球的質(zhì)量相同,另一個(gè)與其他球的質(zhì)量不同(且不知道是比其他球重還是輕),請問在最壞的情況下,最少需要多少次就能找出這個(gè)不同質(zhì)量的球。
79、有一個(gè)數(shù)組a,設(shè)有一個(gè)值n。在數(shù)組中找到兩個(gè)元素a[i]和a[j],使得a[i]+a[j]等于n,求出所有滿足以上條件的i和j。
80、1萬個(gè)元素的數(shù)組,90%的元素都是1到100的數(shù),10%的元素是101--10000的數(shù),如何高效排序。
81、用簡單語句描述數(shù)據(jù)庫操作的步驟?。
82、寫出TCP/IP的四層結(jié)構(gòu)。
83、什么是MVC結(jié)構(gòu),并描述各層結(jié)構(gòu)的作用?。
84、字母a-z,數(shù)字0-9,現(xiàn)需要其中任意3個(gè)作為密碼,請輸出所有可能組合。(偽碼\C\C++\JAVA)
點(diǎn)評:如本文評論下第198樓所述,即從26+10=36個(gè)不同字符中選取3個(gè)字符的組合,用遞歸及非遞歸兩種方法,可以參照以下鏈接:
http://blog.csdn.net/wumuzi520 ... 87501(從n個(gè)數(shù)中選取m個(gè)數(shù)的組合數(shù))。
85、實(shí)現(xiàn)字符串反轉(zhuǎn)函數(shù)。
86、給定字符函數(shù)a、插入 b、刪除 c、替換
例如字符串A=acegf,字符串B=adef,最少需要2步操作將A轉(zhuǎn)換為B,
即第一步將c替換為d,第二步將g刪除;
1).請問將字符串A=gumbo轉(zhuǎn)換為字符串B=gambol,最少需要幾步操作,列出如何操作
2).任意字符串A和字符串B,如何計(jì)算最小操作次數(shù),計(jì)算思路,并給出遞歸公式
3).實(shí)現(xiàn)代碼(注意代碼風(fēng)格與效率)
87、RSA SecurID安全系統(tǒng)
應(yīng)用場景:這是一種用戶登錄驗(yàn)證手段,例如銀行登錄系統(tǒng),這個(gè)設(shè)備顯示6位數(shù)字,每60秒變一次,再經(jīng)過服務(wù)器認(rèn)證,通過則允許登錄。問How to design this system?
1).系統(tǒng)設(shè)計(jì)思路?服務(wù)器端為何能有效認(rèn)證動(dòng)態(tài)密碼的正確性?
2).如果是千萬量級永固,給出系統(tǒng)設(shè)計(jì)圖示或說明,要求子功能模塊劃分清晰,給出關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫表結(jié)構(gòu)。
考慮用戶量級的影響和擴(kuò)展性,用戶密碼的隨機(jī)性等,如果設(shè)計(jì)系統(tǒng)以支持這幾個(gè)因素.
3).系統(tǒng)算法升級時(shí),服務(wù)器端和設(shè)備端可能都要有所修改,如何設(shè)計(jì)系統(tǒng),能夠使得升級過程(包括可能的設(shè)備替換或重設(shè))盡量平滑?
88、什么是RISC。
89、通過后序、中序求前序?。
90、重寫與重載的區(qū)別?。
91、判斷兩個(gè)數(shù)組中是否有相同的數(shù)字?。
92、1000瓶水中找 出有毒的那瓶,毒性一周后發(fā)作,一周內(nèi)最少需要多少只老鼠?。
93、系統(tǒng)設(shè)計(jì) email客戶端,支持多賬戶和pop3等協(xié)議
1). 請寫出可能的至少5個(gè)用例;
2). 使用sqlite存儲(chǔ)帳戶、已收信息、已發(fā)信息、附件、草稿,請?jiān)O(shè)計(jì)合理的表結(jié)構(gòu)
3). pop3等協(xié)議等接口已完成,請給出email客戶端的模塊設(shè)計(jì)圖。
94、百度地圖里的路線查詢:給定兩個(gè)站點(diǎn),如果沒有直達(dá)的路線,如何找到換乘次數(shù)最少的路線?
點(diǎn)評:螞蟻算法?還是廣搜,或A*算法?
95、有一箱蘋果,3個(gè)一包還剩2個(gè),5個(gè)一包還剩3個(gè),7個(gè)一包還剩2個(gè),求N個(gè)滿足以上條件的蘋果個(gè)數(shù)。
96、用遞歸算法寫一個(gè)函數(shù),求字符串最長連續(xù)字符的長度,比如aaaabbcc的長度為4,aabb的長度為2,ab的長度為1。
97、假設(shè)一個(gè)大小為100億個(gè)數(shù)據(jù)的數(shù)組,該數(shù)組是從小到大排好序的,現(xiàn)在該數(shù)組分成若干段,每個(gè)段的數(shù)據(jù)長度小于20「也就是說:題目并沒有說每段數(shù)據(jù)的size 相同,只是說每個(gè)段的 size < 20 而已」,然后將每段的數(shù)據(jù)進(jìn)行亂序(即:段內(nèi)數(shù)據(jù)亂序),形成一個(gè)新數(shù)組。請寫一個(gè)算法,將所有數(shù)據(jù)從小到大進(jìn)行排序,并說明時(shí)間復(fù)雜度。
點(diǎn)評:
思路一、如@四萬萬網(wǎng)友所說:維護(hù)一個(gè)20個(gè)元素大小的小根堆,然后排序,每次pop取出小根堆上最小的一個(gè)元素(log20),然后繼續(xù)遍歷原始數(shù)組后續(xù)的(N-20)個(gè)元素,總共pop?(N-20)次20個(gè)元素小根堆的log20的調(diào)整操作。
思路二@飄零蝦、如果原數(shù)組是a[],那么a[i+20]>=a[i]恒成立(因?yàn)槊慷蝸y序區(qū)間都是小于20的,那么向后取20,必然是更大的區(qū)間的元素)。
第一個(gè)數(shù)組:取第0、20、40、60、80...
第二個(gè)數(shù)組:取第1、21、41、61、81...
...
第20個(gè)數(shù)組:取第19、39、59、79... ? ? (上述每個(gè)數(shù)組100億/20 個(gè)元素)
共計(jì)20個(gè)數(shù)組,每個(gè)數(shù)組100億/20 個(gè)元素「注:這5億個(gè)元素已經(jīng)有序,不需要再排序」,且這20個(gè)數(shù)組都是有序的,然后對這20個(gè)數(shù)組進(jìn)行歸并,每次歸并20個(gè)元素。時(shí)間復(fù)雜度跟上述思路一一樣,也是N*logK(N=100億,K=20)。
此外,讀者@木葉漂舟直接按每組20個(gè)排序,將排好的20個(gè)與前20個(gè)調(diào)整拼接,調(diào)整兩端接頭處的元素,寫了個(gè)簡單地demo:http://t.cn/zlELAzs。不過,復(fù)雜度有點(diǎn)高,目前來說中規(guī)中矩的思路還是如上文中@四萬萬網(wǎng)友 所說思路一「@張瑋-marihees按照思路一:http://weibo.com/1580904460/z1v5jxJ9P,寫了一份代碼:http://codepad.org/T5jIUFPG,歡迎查看」。
98、一在線推送服務(wù),同時(shí)為10萬個(gè)用戶提供服務(wù),對于每個(gè)用戶服務(wù)從10萬首歌的曲庫中為他們隨機(jī)選擇一首,同一用戶不能推送重復(fù)的,設(shè)計(jì)方案,內(nèi)存盡可能小,寫出數(shù)據(jù)結(jié)構(gòu)與算法。
99、來自《編程之美》的概率題:一個(gè)桶里面有白球、黑球各100個(gè),現(xiàn)在按下述規(guī)則取球:的
i 、每次從通里面拿出來兩個(gè)球;
ii、如果取出的是兩個(gè)同色的求,就再放入一個(gè)黑球;
ii、如果取出的是兩個(gè)異色的求,就再放入一個(gè)白球。
問:最后桶里面只剩下一個(gè)黑球的概率是多少?
100、給你一個(gè)自然數(shù)N,求[6,N]之內(nèi)的所有素?cái)?shù)中,兩兩之和為偶數(shù)的那些偶數(shù)。
101、相似度計(jì)算用于衡量對象之間的相似程度,在數(shù)據(jù)挖掘,自然語言處理中是一個(gè)基礎(chǔ)性計(jì)算,在廣告檢索服務(wù)中往往也會(huì)判斷網(wǎng)民檢索Query和Adword的主題相似度,假設(shè)Query或者Adword的主題屬性定義為一個(gè)長度為10000的浮點(diǎn)數(shù)組Pr[10000](稱之為主題概率數(shù)組),其中Pr[i]表示Query或者Adword屬于主題ID為I的概率,而Query和Adword的相似度簡化定義為兩者主題概率數(shù)組的內(nèi)積:即sim(Query,Adword)=sum(QueryPr[i]*AdwordPri,在實(shí)際應(yīng)用場景中,由于大多數(shù)主題的概率都為0,所以主題概率數(shù)組往往比較稀疏,在實(shí)現(xiàn)時(shí)會(huì)以一個(gè)緊湊型數(shù)組topic_info_t[]的方式保存,其中100<=數(shù)組大小<=1000,并按照topic_id遞增排列,0<=topic_id<10000,0
Structtopic_info_t{Inttopic_id;Floattopic_pr;};
現(xiàn)在給出Query的topic_info_t數(shù)組和N(N>=5000)個(gè)Adwords的topic_info_t數(shù)組,現(xiàn)要求出Query與Adwords的相似度最大值,即max(sim(Query,Adword[i]))(0<=i
Float max_sim(comst vector&query_topic_info,
Const vectoradwords_topic_info[],
Int adwords_number);
102、動(dòng)態(tài)鏈接庫和靜態(tài)鏈接庫分別有什么優(yōu)缺點(diǎn)?
103、輪詢?nèi)蝿?wù)調(diào)度與搶占式任務(wù)調(diào)度的區(qū)別?
104、待更新。
105、待更新。
106、長度為N(N很大)的字符串,求這個(gè)字符串里的最長回文子串。
107、數(shù)軸上從左到右有n個(gè)點(diǎn)a[0],a[1]...a[n-1],給定一根長度為L的繩子,求繩子最多能覆蓋其中的幾個(gè)點(diǎn)。
108、三色球排序的問題,相同的球放到一起,讓你按順序輸出紅白藍(lán)三種顏色的球,可以用012來表示,要求只能掃描一次數(shù)組。
點(diǎn)評:荷蘭國旗問題,參見此文第8小節(jié):http://blog.csdn.net/v_july_v/ ... 11155。
109、實(shí)現(xiàn)C的strstr
點(diǎn)評:手寫字符串處理相關(guān)函數(shù)是面試中極為常見的一類題型。
功能:從字符串str1中查找是否有字符串str2,
-如果有,從str1中的str2位置起,返回str1中str2起始位置的指針,如果沒有,返回null。
C++參考代碼:
//copyright@caopengcs?2013/10月classSolution{public:char*strStr(char*haystack,char*needle){//?Start?typing?your?C/C++?solution?below//?DO?NOT?write?int?main()?functioninti,j;for(i=j=0;haystack[i]&&needle[j];){if(haystack[i]==needle[j]){++i;++j;}else{i=i-j+1;j=0;}}returnneedle[j]?0:(haystack+i-j);}};
110、寫一個(gè)memmove的函數(shù)
點(diǎn)評:手寫常見字符串處理函數(shù)是面試官很喜歡考的一類題型。
111、JAVA里面的線程同步機(jī)制、異常處理機(jī)制、集合類、簡單的設(shè)計(jì)模式、hashmap和hashtable的區(qū)別,及HashMap和ConcurrentHashMap的區(qū)別。
112、給出數(shù)組A={a_0,a_1,a_2,...,a_n}(n是可變的),打印出所有元素的組合
113、數(shù)組A中任意兩個(gè)相鄰元素大小相差1,現(xiàn)給定這樣的數(shù)組A和目標(biāo)整數(shù)t,找出t在數(shù)組A中的位置。
114、求二叉樹的面積(高乘寬),高為二叉樹根到葉子節(jié)點(diǎn)的最大距離,寬慰二叉樹最多的節(jié)點(diǎn)數(shù)。
115、給了一個(gè)百度地圖的截圖,對于地圖上的某一點(diǎn),需要在地圖上標(biāo)注該點(diǎn)的信息,將信息抽象成一個(gè)矩形,可以在該點(diǎn)的左邊標(biāo)記,也可以在該點(diǎn)右邊標(biāo)記。但是任意兩點(diǎn)標(biāo)記后的矩形是不能有覆蓋的,否則刪除其中一個(gè)點(diǎn)
問題1,現(xiàn)給一固定區(qū)域,有n個(gè)點(diǎn),設(shè)計(jì)一個(gè)算法,要求標(biāo)記足夠多的點(diǎn)
問題2,當(dāng)點(diǎn)足夠多時(shí)候,算法會(huì)遇到性能瓶頸,需要對算法重新優(yōu)化。
更多題目請參見:http://blog.csdn.net/xyanghome ... 87771。
116、深度神經(jīng)網(wǎng)絡(luò)目前有哪些成功的應(yīng)用?簡述原因。
117、列舉不同進(jìn)程共享數(shù)據(jù)的方式(至少三種)。
118、對于N個(gè)樣本,每個(gè)樣本為D維向量,采用歐式距離使用KNN做類預(yù)測。
1).給出預(yù)測時(shí)間復(fù)雜度。
2).當(dāng)N很大時(shí),有哪些方法可以降低復(fù)雜度?
3).k取值的大小對預(yù)測方差和偏差有何影響?
119、給出一個(gè)數(shù)據(jù)A=a_0, a_1, a-2, ... a_n,打印出該數(shù)值元素的所有組合。
120、有這樣一個(gè)數(shù)組A,大小為n,相鄰元素差的絕對值都是1,如A={4,5,6,5,6,7,8,9,10,9}。現(xiàn)在給定數(shù)組A和目標(biāo)整數(shù)t,請找到t在數(shù)組中的位置。
121、在平面上有一組間距為d的平行線,將一根長度為l(l
122、關(guān)于K-means聚類算法,請回答以下問題:
1).寫出將N個(gè)樣本X=(x1, ... xN)聚類成k類的k_means聚類算法的優(yōu)化目標(biāo);
2).描述K-means終止的常用條件;
3).以Kmeans算法為例,描述Expectation-Maximization(EM)算法的基本原理與步驟。
4).用偽代碼給出基于MPI或者HADOOP的Kmeans并行算法。
題目來源:http://blog.csdn.net/luoweifu/ ... 85169。
123、簡述計(jì)算機(jī)的存儲(chǔ)系統(tǒng)分為哪幾個(gè)層次,為什么這樣的分層能夠提高程序的執(zhí)行效率。
124、浮點(diǎn)數(shù)在計(jì)算中如何表示,如何對浮點(diǎn)數(shù)判等。
125、簡述TCP與UDP協(xié)議的差別,兩者與HTTP的關(guān)系。并列舉HTTP的方法,以及常見的返回狀態(tài)碼。
126、設(shè)計(jì)一個(gè)反轉(zhuǎn)字符串的函數(shù) char *reverse_str(char *str),不使用系統(tǒng)函數(shù)。
127、給定一個(gè)字符串,(1,(2,3),(4,(5,6),7)),使它變?yōu)椋?,2,3,4,5,6,7),設(shè)計(jì)一個(gè)算法消除其中嵌套的括號。(c/c++)
128、使用C語言實(shí)現(xiàn)htonl(將long性轉(zhuǎn)為網(wǎng)絡(luò)字節(jié)碼),不使用系統(tǒng)自帶函數(shù)。
129、面向?qū)ο笫且环N思想,使用C語言來實(shí)現(xiàn)下列問題。
1). 如何定義一個(gè)類?
2). 如何創(chuàng)建以及銷毀對象?
3). 如何實(shí)現(xiàn)類的繼承?
題目來源:http://blog.csdn.net/cocoarann ... 91025。
130、數(shù)組A中任意兩個(gè)相鄰元素大小相差1,在其中查找某個(gè)數(shù)。
數(shù)組A中任意兩個(gè)相鄰元素大小相差1,現(xiàn)給定這樣的數(shù)組A和目標(biāo)整數(shù)t,找出t在數(shù)組A中的位置。
如數(shù)組:[1,2,3,4,3,4,5,6,5],找到4在數(shù)組中的位置。
這道題目最差時(shí)間復(fù)雜度也是O(N),所以重點(diǎn)在于能不能找到一種盡可能減少比較次數(shù)的方法。@jefflee 的方法就很不錯(cuò),但感覺應(yīng)該還可以繼續(xù)優(yōu)化?
131、給定n個(gè)元素,打印出全排列
比如輸入1 2 3,打印出6種排列情況
132、有兩個(gè)不同的數(shù)在1-30之間(不包括1和30),甲知道兩數(shù)之和,乙知道兩數(shù)之積。乙問甲知道是那兩個(gè)數(shù)嗎?甲說不知道。甲同樣反問乙,乙也說不知道。然后乙說我知道了,再然后甲說我知道了。請問是哪兩個(gè)數(shù)?
解析:前提是甲不能能通過兩數(shù)之和確定具體哪兩個(gè)數(shù),乙也不能通過兩數(shù)之積判斷出具體哪兩個(gè)數(shù)。
然后當(dāng)乙知道甲也不能確定的時(shí)候,乙卻可以快速判斷出來說明甲心里已經(jīng)有了幾個(gè)選項(xiàng),然后根據(jù)甲不確定就可以排除掉不正確的。然后甲也是如此。
來源:http://ask.julyedu.com/question/261
133、子query統(tǒng)計(jì)和重要子query識別
問題定義:
當(dāng)query A切詞后的term集是query B切詞后的term集的真子集時(shí),稱query A為query B的子query,例如:
“劉德華”的切詞結(jié)果為“劉德華”;
“劉德華電影”的切詞結(jié)果為“劉德華 電影”;
“劉德華最新電影”的切詞結(jié)果為“劉德華 最新 電影”;
“劉德華電影下載”的切詞結(jié)果為“劉德華 電影 下載”;
根據(jù)以上切詞結(jié)果,劉德華”是“劉德華電影”,“劉德華最新電影”, “劉德華電影下載”的子query;
“劉德華電影”是“劉德華最新電影”, “劉德華電影下載”的子query;
但是,“劉德華電影下載”和“劉德華最新電影”互相不是對方的子query。
現(xiàn)有億級的用戶query,并且知道每個(gè)query的查詢次數(shù),要求:
(1)列出一個(gè)query的全部子query,寫出C語言實(shí)現(xiàn)。
(2) query中的不同term對這個(gè)query的重要性不同的,例如“劉德華 電影 下載”中“劉德華”和“電影”的重要性比“下載”重要,因?yàn)椋骸皠⒌氯A 電影“所表達(dá)的查詢需求,與”劉德華 下載“或者”電影 下載“相比,更接近原query的需求。根據(jù)(1)中的統(tǒng)計(jì)的子query數(shù)據(jù),請給出一種思路,來計(jì)算一個(gè)query中的所有子query的重要性排序。
如果認(rèn)為子query數(shù)據(jù)的信息不夠充分,請給出還需要哪些信息,以及獲得這些信息的途徑,給出算法思路描述,必要的符號和推理公式即可。
134、給定多個(gè)集合,求他們的笛卡爾積。
比如給定{a, b}, {1,2,3},結(jié)果為{a, 1}, {a, 2}, {a, 3}, {b,1}, {b, 2}, {b, 3};
要求時(shí)間和空間復(fù)雜度盡可能低,不要使用遞歸,不要使用類似樹的非遞歸實(shí)現(xiàn)。
135、一個(gè)單詞單詞字母交換,可得另一個(gè)單詞,如army->mary,成為兄弟單詞。提供一個(gè)單詞,在字典中找到它的兄弟。描述數(shù)據(jù)結(jié)構(gòu)和查詢過程。
136、假設(shè)張三的mp3里有1000首歌,現(xiàn)在希望設(shè)計(jì)一種隨機(jī)算法來隨機(jī)播放。與普通隨機(jī)模式不同的是,張三希望每首歌被隨機(jī)到的改了吧是與一首歌的豆瓣評分(0~10分)成正比的,如樸樹的《平凡之路》評分為8.9分,逃跑計(jì)劃的《夜空中最亮的星》評分為9.5分,則希望聽《平凡之路》的概率與《夜空中最亮的星》的概率比為89:95,。現(xiàn)在我們已知這1000首歌的豆瓣評分:
1).請?jiān)O(shè)計(jì)一種隨機(jī)算法來滿足張三的需求。
2).請寫代碼實(shí)現(xiàn)自己的算法。
社區(qū)討論地址:http://ask.julyedu.com/question/127。
137、給定任意一個(gè)正整數(shù),求比這個(gè)數(shù)大且最小的“不重復(fù)數(shù)”,“不重復(fù)數(shù)”的含義是相鄰兩位不相同,例如1101是重復(fù)數(shù),而1201是不重復(fù)數(shù)。
138[6,N]之內(nèi)的所有素?cái)?shù)中,兩兩之和為偶數(shù)的那些偶數(shù)
RT
其中N是個(gè)自然數(shù),請給出算法描述,代碼與時(shí)間復(fù)雜度分析。
139在由N個(gè)正整數(shù)的集合S中,找出最大元素C,滿足C=A + B
RT
其中A,B都是集合S中元素,請給出算法描述,代碼與時(shí)間復(fù)雜度分析。
140、請列舉出你熟悉的知名論壇/社區(qū)的名稱、URL、優(yōu)勢以及原因。
141、如何提高老年人和兒童使用手機(jī)百度的頻率?
142、百度衛(wèi)士新推出看片保護(hù)(觀看視頻時(shí)防止病毒侵害)功能, 請針對該功能設(shè)計(jì)一個(gè)具體的運(yùn)營規(guī)劃。
143、Cookie、sessionStorage、localStorage的區(qū)別
144、javascript中call()方法和apply()方法的區(qū)別。
145、什么是 “use strict”? 使用它的好處和壞處是什么?
146、寫一段簡單的正則表達(dá)式,匹配并取出字符串”https://www.baidu.com/s?cl=3”中的域名部分(注:域名部分非固定)
147、用原生javascript編寫程序:創(chuàng)建一個(gè)ul無序列表元素添加到body中,ul下包含5個(gè)li元素,每個(gè)li元素包含一個(gè)text類型元素,text元素內(nèi)容可自定義。
148、假設(shè)有一個(gè)基礎(chǔ)對象叫“動(dòng)物”,擁有以下屬性:腿的數(shù)量、是否有尾巴,有另外一個(gè)對象叫“貓”,擁有“動(dòng)物”對象的屬性,并增加一個(gè)屬性為:動(dòng)物名稱,再增加一個(gè)方法,返回動(dòng)物名稱+腿的數(shù)量+是否有尾巴的描述,請使用javascript原型鏈繼承來創(chuàng)建以上2個(gè)對象。
149、請解釋tcp連接建立過程,如果可能,請結(jié)合相應(yīng)系統(tǒng)調(diào)用函數(shù)解釋交互過程。
150、給定一個(gè)整數(shù)的數(shù)組,相鄰的數(shù)不能同時(shí)選,求從該數(shù)組選取若干整數(shù),使得他們的和最大,要求只能使用o(1)的空間復(fù)雜度。要求給出偽碼。
151、二分查找是常用的編程方法,請用完整代碼實(shí)現(xiàn)該函數(shù)(不許調(diào)用庫函數(shù))
void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*compar) (const void *, const void *));
152、對于Edit控件,你如何抓防止密碼框內(nèi)容被抓取?
153、DNS欺騙的方式有哪些?
154、列舉兩種應(yīng)用層中簡單的跨進(jìn)程DLL注入的方法。
155、假設(shè)有如下所示的一個(gè)數(shù)字金字塔,現(xiàn)在,要求寫一個(gè)程序來查找從頂點(diǎn)到底部任意處結(jié)束的路徑,使路徑經(jīng)過的數(shù)字的和最大,并輸出該路徑的最大和。比如以下金字塔的和最大路徑的和為7+3+8+7+5=30。
7
3 2
8 1 0
2 7 4 4
4 5 2 6 5
156、假設(shè)有如下字符串: (234453)[234]{2324} 現(xiàn)在,要求編程分析其括號配對是否正確。請自行選擇下列兩種方案之一實(shí)現(xiàn)該程序:
方案一:不考慮括號優(yōu)先級,只考慮配對正確性;方案二:考慮括號優(yōu)先級,比如{1[2(3)4]5} 是正確的。但是[1{2}3]是不正確的。
157、百度是一個(gè)大型網(wǎng)站,內(nèi)部含有多個(gè)產(chǎn)品線,比如廣為人知的貼吧、知道、空間等應(yīng)用。然而設(shè)計(jì)這些應(yīng)用的統(tǒng)一登錄平臺(tái)卻是一件非常艱巨的挑戰(zhàn)。需要考慮到通用性和安全性。
1). 對于一個(gè)Web應(yīng)用程序,主要的身份驗(yàn)證和憑證保持的方法主要有cookie和session兩種。他們又是如何起作用的?各有哪些優(yōu)缺點(diǎn)?
2). 影響到cookie值作用范圍的因素有哪些?請一一說明。
3)?.從安全角度來考慮,一個(gè)大型網(wǎng)站的單點(diǎn)登錄可能會(huì)引入哪些安全問題?如何設(shè)計(jì)安全的在線單點(diǎn)登錄系統(tǒng)?
158、HTML的Doctype作用??嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?
159、請用CSS實(shí)現(xiàn)如下圖的樣式,相關(guān)尺寸如圖示,其中dom結(jié)構(gòu)為:
160、簡述document.write和 innerHTML的區(qū)別。
161、你知道的,javascript語言的執(zhí)行環(huán)境是"單線程模式",這種模式的好處是實(shí)現(xiàn)起來比較簡單,執(zhí)行環(huán)境相對單純;壞處是只要有一個(gè)任務(wù)耗時(shí)很長,后面的任務(wù)都必須排隊(duì)等著,會(huì)拖延整個(gè)程序的執(zhí)行,因此很多時(shí)候需要進(jìn)行“異步模式”,請列舉js異步編程的方法。
162、用戶從手機(jī)的瀏覽器訪問www.baidu.com,看到的可能跟桌面PC電腦,是不太一樣的網(wǎng)頁效果,會(huì)更適合移動(dòng)設(shè)備使用。請簡要分析一下,實(shí)現(xiàn)這種網(wǎng)頁區(qū)分顯示的原因及技術(shù)原理。
163、Flappy Bird是風(fēng)靡一時(shí)的手機(jī)游戲,玩家要操作一只小鳥穿過無窮無盡的由鋼管組成的障礙。如果要你在HTML前端開發(fā)這個(gè)游戲,為了保證游戲的流暢運(yùn)行,并長時(shí)間運(yùn)行也不會(huì)崩潰,請列舉開發(fā)要注意的性能問題和解決的方法。
164、如下圖,請實(shí)現(xiàn)表格信息的排序功能,當(dāng)點(diǎn)擊表頭的屬性區(qū)域,將表格信息進(jìn)行排序切換功能,即第一次點(diǎn)擊為降序排序,再一次點(diǎn)擊進(jìn)行升序排序。
165、C++有哪些數(shù)據(jù)類型?為什么long和int都是4字節(jié)?
166、JAVA和C++的區(qū)別是什么?分別用在什么情景比較好?
167、給定一個(gè)文件每一行是字符串,找出所有的逆序?qū)Γ热鏰bc和cba是逆序的對。
168、給定一個(gè)奇數(shù)n,比如n=3,生成1到n平方的數(shù),如1到9,填入九宮格,使得橫豎斜的和都相等。
169、C和C++有什么區(qū)別,能用C實(shí)現(xiàn)C++所有功能嗎?C能實(shí)現(xiàn)多態(tài)嗎?
170、25匹馬,5條賽道,一匹馬一個(gè)賽道,比賽只能得到5匹馬之間的快慢程度,而不是速度,求決勝1,2,3名至少多少場。
171、請用c++ 實(shí)現(xiàn)stl中的string類,實(shí)現(xiàn)構(gòu)造,拷貝構(gòu)造,析構(gòu),賦值,比較,字符串相加,獲取長度及子串等功能。