一、請定義一個宏,比較兩個數a、b的大小,不能使用大於、小於、if語句。javascript
二、兩個數相乘,小數點後位數沒有限制,請寫一個高精度算法。java
三、有A、B、C、D四我的,要在夜裏過一座橋。他們經過這座橋分別須要耗時一、二、五、10分鐘,只有一支手電,而且同時最多隻能兩我的一塊兒過橋。請問,如何安排,可以在17分鐘內這四我的都過橋?web
四、有12個小球,外形相同,其中一個小球的質量與其餘11個不一樣,給一個天平,問如何用3次把這個小球找出來,而且求出這個小球是比其餘的輕仍是重。算法
五、在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制爲 2G。只寫出思路便可。小程序
六、一個文件中有40億個整數,每一個整數爲四個字節,內存爲1GB,寫出一個算法:求出這個文件裏的整數裏不包含的一個整數。windows
七、騰訊服務器每秒有2w個QQ號同時上線,找出5min內從新登入的qq號並打印出來。數組
八、在一篇英文文章中查找指定的人名,人名使用二十六個英文字母(能夠是大寫或小寫)、空格以及兩個通配符組成(、?),通配符「」表示零個或多個任意字母,通配符「?」表示一個任意字母。
如:「J* Smi??」 能夠匹配「John Smith」 .
請用C語言實現以下函數:
void scan(const char* pszText, const char* pszName);
注:pszText爲整個文章字符,pszName爲要求匹配的英文名。
請完成些函數實現輸出全部匹配的英文名,除了printf外,不能用第三方的庫函數等。緩存
九、服務器內存1G,有一個2G的文件,裏面每行存着一個QQ號(5-10位數),怎麼最快找出出現過最屢次的QQ號。服務器
十、如何求根號2的值,而且按照個人須要列出指定小數位,好比根號2是1.141 我要列出1位小數就是1.1 2位就是1.14, 1000位就是1.141...... 等。。併發
十一、若是用一個循環數組q[0..m-1]表示隊列時,該隊列只有一個隊列頭指針front,不設隊列尾指針rear,求這個隊列中從隊列投到隊列尾的元素個數(包含隊列頭、隊列尾)。
十二、兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]賦值,b[i] = a[0]a[1]a[2]...a[N-1]/a[i];
要求:
1). 不許用除法運算
2). 除了循環計數值,a[N],b[N]外,不許再用其餘任何變量(包括局部變量,全局變量等)
3). 知足時間複雜度O(n),空間複雜度O(1)。
說白了,你要我求b=a[0]a...a[i-1]aa[i+1]..a[N-1]/a ,就是求:a[0]a[1]...a[i-1]a[i+1]..a[N-1]。只是我把a[i]左邊部分標示爲left[i],b[i]右邊部分標示爲right[i],而實際上徹底不申請left[i],與right[i]變量,之因此那樣標示,無非就是爲了說明:除掉當前元素a[i],其餘全部元素(a[i]左邊部分,和a[i]右邊部分)的積。讀者你明白了麼?
下面是此TX筆試題的兩段參考代碼,以下:
//ncicc
b[0] = 1;
for (int i = 1; i < N; i++)
{
b[0] = a[i - 1];
b[i] = b[0];
}
b[0] = 1;
for (i = N - 2; i > 0; i--)
{
b[0] = a[i + 1];
b[i] = b[0];
}
b[0] = a[1];
from wasd6081058上面第二段代碼最後一行的意義是:咱們看第二個循環,從N-2到 1;再看for循環中b[0]的賦值,從N-1到2,而根據題目要求b[i] = a[0]a[1]a[2]...a[N-1]/a[i],b[0]應等於a[1]a[2]* ....a[N-1],因此這裏手動添加a[1]。
1三、有不一樣的手機終端,如iphone,安卓,Symbian,不一樣的終端處理不同,設計一種服務器和算法實現對不一樣的終端的處理。
1四、設計一種內存管理算法。
1五、A向B發郵件,B收到後讀取併發送收到,可是中間可能丟失了該郵件,怎麼設計一種最節省的方法,來處理丟失問題。
1六、設計一種算法求出算法複雜度 。
1七、給你5個球,每一個球被抽到的可能性爲30、50、20、40、10,設計一個隨機算法,該算法的輸出結果爲本次執行的結果。輸出A,B,C,D,E便可。
1八、五筆的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,若是咱們把五筆的編碼按字典序排序,造成一個數組以下:
a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy
其中a的Index爲0,aa的Index爲1,aaa的Index爲2,以此類推。
1).編寫一個函數,輸入是任意一個編碼,好比baca,輸出這個編碼對應的Index;
2).編寫一個函數,輸入是任意一個Index,好比12345,輸出這個Index對應的編碼。
1九、有N+2個數,N個數出現了偶數次,2個數出現了奇數次(這兩個數不相等),問用O(1)的空間複雜度,找出這兩個數,不須要知道具體位置,只須要知道這兩個值。(@Rojay:xor一次,獲得2個奇數次的數之和x。第二步,以x(展開成二進制)中有1的某位(假設第i位爲1)做爲劃分,第二次只xor第i位爲1的那些數,獲得y。而後x xor y以及y即是那兩個數。 )
20、例如手機朋友網有n個服務器,爲了方便用戶的訪問會在服務器上緩存數據,所以用戶每次訪問的時候最好能保持同一臺服務器。
已有的作法是根據ServerIPIndex[QQNUM%n]獲得請求的服務器,這種方法很方便將用戶分到不一樣的服務器上去。可是若是一臺服務器死掉了,那麼n就變爲了n-1,那麼ServerIPIndex[QQNUM%n]與ServerIPIndex[QQNUM%(n-1)]基本上都不同了,因此大多數用戶的請求都會轉到其餘服務器,這樣會發生大量訪問錯誤。
問: 如何改進或者換一種方法,使得:
1). 一臺服務器死掉後,不會形成大面積的訪問錯誤,
2). 原有的訪問基本仍是停留在同一臺服務器上;
3). 儘可能考慮負載均衡。
2一、A.txt和B.txt兩個文件,A.txt有1億個QQ號 , B.txt 100W個QQ號, 用代碼實現交、並、差。
2二、50個臺階,一次可一階或兩階,共有幾種走法?
2三、一個大小爲N的數組,裏面是N個整數,怎樣去除重複,要求時間複雜度爲O(n),空間複雜度爲O(1)。
(此題答案請見@做者hawksoft:http://blog.csdn.net/hawksoft/ ... 67493)。
2四、好比A認識B,B認識C,可是A不認識C, 那麼稱C是A的二度好友。找出某我的的全部十度好友. 數據量爲10萬。
2五、 M*M的方格矩陣,其中有一部分爲障礙,八個方向都可以走,現假設矩陣上有Q+1節點,從(X0,Y0)出發到其餘Q個節點的最短路徑。
其中,1<=M<=1000,1<=Q<=100。
2六、到商店裏買200的商品返還100優惠券(能夠在本商店代替現金)。請問實際上折扣是多少?
2七、給定一個字符串,求出其最長的重複子串。
思路:使用後綴數組,對一個字符串生成相應的後綴數組後,而後再排序,排完序依次檢測相鄰的兩個字符串的開頭公共部分。
這樣的時間複雜度爲:
生成後綴數組 O(N)
排序 O(NlogNN) 最後面的 N 是由於字符串比較也是 O(N)
依次檢測相鄰的兩個字符串 O(N N)
總的時間複雜度是 O(N^2*logN),
2八、假設兩個字符串中所含有的字符和個數都相同咱們就叫這兩個字符串匹配,
好比:abcda和adabc,因爲出現的字符個數都是相同,只是順序不一樣,
因此這兩個字符串是匹配的。要求高效!
思路:http://blog.csdn.net/v_JULY_v/ ... 47454。
2九、微博廣告投放是騰訊收入來源之一。爲了保證投放的廣告對用戶更有幫助,必須分享用戶對什麼感興趣。用戶的每條微博均可以拆分紅幾個關鍵詞,騰訊微博每月都會收集到上T(Terabyte)的關鍵詞,請你分析出其中出現次數最多的十個關鍵詞。
30、騰訊新聞首頁改版以後,爲了精確掌握改版效果,須要準實時統計訪問每篇文章的IP數量,即從文章發表以後,有多少個不一樣IP的用戶讀過這篇文章。每一個用戶訪問請求都會被web服務器解析,並實時傳輸到後臺統計系統,請你設計該「後臺統計系統」,以完成統計。
3一、寫一個函數對字符串數組進行排序,排序的規則是根據每一個字符串重複出現次數最多的字符出現的次數,在次數相同的親狀況下根據出現次數第二多的字符排序。
好比:」abcaba」中重複出現次數最多的字符是a,次數是3,第二多的字符是b,次數是2,第三是c,次數是1。所以mySort([「abcaba」,」asdfasdf」,」asdfasdfasdf」])的結果是:[「asdfasdfasdf」,」abcaba」,」asdfasdf」]。
3二、有一個log文件,裏面記錄的格式爲:
QQ號: 時間: flag:
如123456 14:00:00 0
123457 14:00:01 1
其中flag=0表示登陸 flag=1表示退出
問:統計一天平均在線的QQ數。
點評:相似於此文中:http://blog.csdn.net/hackbutee ... 48968,讀者能夠參看之。
3三、有一億個數,輸入一個數,找出與它編輯距離在3之內的書,好比輸入6(0110),找出0010等數,數是32位的。
3四、每一個城市的IP段是固定的,新來一個IP,找出它是哪一個城市的,設計一個後臺系統。
3五、N個數組,每一個數組中的元素都是遞增的順序,如今要找出這N個數組中的公共元素部分,如何作? 注:不能用額外輔助空間。
3六、http服務器會在用戶訪問某一個文件的時候,記錄下該文件被訪問的日誌,網 站管理員都會去統計天天每文件被訪問的次數。寫一個小程序,來遍歷整個日誌 文件,計算出每一個文件被訪問的訪問次數
1).請問這個管理員設計這個算法
2).該網站管理員後來加入騰訊從事運維工做,在騰訊,單臺http服務器不夠用的 ,一樣的內容,會分佈在全國各地上百臺服務器上。每臺服務器上的日誌數量, 都是以前的10倍之多,天天服務器的性能更好,以前他用的是單核cpu,如今用的 是8核的,管理員發如今這種的海量的分佈式服務器,基本無法使用了,請從新設計一個算法。
3七、騰訊的qq遊戲當中,最多人玩的遊戲就是鬥地主了,每一句遊戲開始時,服務 器端都要洗牌,以保證發牌的時每一個人拿的牌都是隨機的,假設用1-54來表示54 張不一樣的拍,請你寫一個洗牌算法,保證54張牌能隨機打散!
3八、請設計一個排隊系統,可以讓每一個進入隊伍的用戶都能看到本身在隊列中所處的位置和變化,隊伍可能隨時有人加入和退出,當有人退出影響到用戶的位置排名時須要即時反饋到用戶。
3九、A,B兩個整數集合,設計一個算法求它們的交集,儘量的高效。
40、一個數組 var arr = ['abc','ddadbc','adbdcd','abcqew'.......] 長度一萬, 用最有效率的方法計算出包含被元素出現最多的。
4一、有100W個關鍵字,長度小於等於50字節。用高效的算法找出top10的熱詞,並對內存的佔用不超過1MB。
點評:老題,與caopengcs討論後,得出具體思路爲:
①先把100W個關鍵字hash映射到小文件,根據題意,100W50B = 5010^6B = 50M,而內存只有1M,故乾脆搞一個hash函數 % 50,分解成50個小文件;
②針對對每一個小文件依次運用hashmap(key,value)完成每一個key的value次數統計,後用堆找出每一個小文件中value次數最大的top 10;
③最後依次對每兩小文件的top 10歸併,獲得最終的top 10。
注:不少細節須要注意下,舉個例子,如若hash映射後致使分佈不均的話,有的小文件可能會超過1M,故爲保險起見,你可能會說根據數據範圍分解成50~500或更多的小文件,但究竟是多少呢?我以爲這不重要,勿糾結答案,雖準備在平時,但關鍵仍是看臨場發揮,保持思路清晰關注細節便可。OK,更多相似題目參見此文:http://blog.csdn.net/v_july_v/ ... 82693。
4二、求二叉樹的任意兩個節點的最近公共祖先。
點評:何謂最低公共祖先,以下圖所示:節點1和節點7的最低公共祖先即是5
22.jpg
4三、給40億個不重複的unsigned int的數,沒排序,而後再給一個數,如何快速間斷這個數是否在那40億個數中?
4四、假設兩個字符串中所含有的字符和個數都相同咱們就叫這兩個字符串匹配,
好比:abcda和adabc,因爲出現的字符個數都是相同,只是順序不一樣,
因此這兩個字符串是匹配的。要求高效。
4五、一個大小爲N的數組,裏面是N個整數,怎樣去除重複。
RT
要求時間複雜度爲O(n),空間複雜度爲O(1)。
4六、如何對1億個QQ號進行排序
4七、C++編譯器有哪些優化?
4八、C++比C快在哪裏?
4九、編寫高效服務器程序,需考慮的因素?
50、設計一個抽卡程序,策劃人員填寫物品出現機率,程序按照機率隨機抽出物品。
5一、給定一個駝峯樣式的字符串 例如「AaABbBcBbcvQv........」->「bc」
兩個同樣的字符夾着一個不同的字符, 處理這個字符串去掉全部的駝峯。
5二、12個工廠分佈在一條東西向高速公路的兩側,工廠距離公路最西端的距離分別是0、四、五、十、十二、1八、2七、30、3一、3八、3九、47.在這12個工廠中選取3個原料供應廠,使得剩餘工廠到最近的原料供應廠距離之和最短,問應該選哪三個廠 ?
5三、待更新。
5四、以windows對文件的複製粘帖功能爲例,儘量多地寫出測試思路。
5五、已知String convert(String page)做用是將WEB頁轉碼爲方便移動設備查看的頁面,爲了確保轉碼的正確性,請設計相應測試策略。
5六、請給Array本地對象增長一個原型方法,它用於刪除數組條目中重複的條目(可能有多個),返回值是一個包含被刪除的重複條目的新數組。
5七、用javascript實現用戶登陸驗證的代碼。
5八、調用動態鏈接庫的函數有哪幾種方法?
5九、WM_QUIT消息的用途是什麼?一個普通的Windows窗口能收到的最後一條消息是什麼?
60、待更新。
6一、有1000億條記錄,每條記錄由url,ip,時間組成,設計一個系統可以快速查詢如下內容
1).給定url和時間段(精確到分鐘)統計url的訪問次數;
2).給定ip和時間段(精確到分鐘)統計ip的訪問次數。
6二、實現一個簡化的搜索提示系統。給定一個包含了用戶query的日誌文件,對於輸入的任意一個字符串s,輸出以s爲前綴的在日誌中出現頻率最高的前10條query。
因爲是分佈式系統,假設至少有26臺機器,每一個機器存儲以26個字母開頭的query日誌文件(如機器1存的是a字母開頭的,機器2存的是以b字母開頭的……)
每一個機器上維護着一張哈希表,對於每條query, 在哈希表表中存放其地址(哈希地址爲鏈式的),並對其進行排序,按頻率由高到低進行排序。
當用戶進行搜索時,能夠很快定位到某臺機器,並根據哈希表,返回出現頻率最高的前10條query。
提示:
1).能夠預處理日誌
2).假設query不超過10億條,每一個query不超過50字節。
3).考慮在大查詢量的狀況下如何實現分佈式服務
6三、待更新。
6四、Android中Looper的實現原理,爲何調用Looper.prepare()就在當前線程關聯了一個Looper對象,它是如何實現的。
6五、簡述Andriod如何處理UI與耗時操做的通訊,有哪些方式及各自的優缺點。
6六、用Object-C定義並實現一個基於數組的循環隊列類,當隊列放滿需支持動態的擴展隊列長度。