阿里筆試題記錄(Android客戶端部分)

阿里筆試題記錄(Android客戶端部分)

選擇題

Alt text

結果應該是選擇 80,8

思路:
- 指針的值都是一個個地址,而地址是用無符號整型值來表示的,也就是unsigned int。因此一個指針類型變量的大小就是unsigned int類型的大小。
- 64位系統,一個地址佔用的二進制位數爲64(8字節),32位系統,地址的二進制位數32(4字節)。參考64位操作系統的指針不都是64位嗎

32位cpu和64位cpu,這個位數指的是數據字長,而不是地址字長。兩者沒有必然的數值上的聯繫。處理器字長是指處理器能同時處理的位數。 而處理器的尋址範圍是要看處理器的地址總線的位數,32位地址總線能夠訪問0~2^32-1,也就是2^32個存儲單元(4GB),因此32位cpu的指針大小就是4個字節(32bit)。64位處理器的數據總線爲64位,而地址總線大都是32位(當然也有的64位處理器的數據總線和地址總線都是64位的)。參考文章32位機指針爲什麼是4個字節 64位與32位的區別

  • char*p[10]表示聲明一個能夠盛放10個char指針元素的數組,命名爲p;char(*p)[10]表示聲明一個指針,指向一個長度爲10的char數組。
  • sizeof()函數,以字節的形式返回其操作數的存儲大小。當操作數是指針時,該函數依賴於編譯器…當操作數是數組類型時候,返回值是數組的總字節數。所以,sizeof(p)是計算的元素類型爲char指針,元素數量爲10的數組的大小,計算方式爲元素類型佔用內存的字節數*數組元素個數,sizeof(p1)是計算一個指針的大小。參考文章解析c語言的sizeof
  • 在編譯器爲GNU GCC Compiler下,結果爲40,4。
  • 由於題幹說是在64位系統下,所以地址長度應該是8字節。

Alt text

我的結果是 1111110

思路:
- 數字組合,看題可得出每位數字的選擇應該是0~9,10個數字。
- 從合法的口令的最低位數開始算起,當口令爲1位時,有10種(10^1);口令爲2位,有100種(10^2)…口令爲6位時,有1000000(10^6)種。加起來爲1111110種。

Alt text

我的答案 以上都不是最優解

思路:
- 路人先選擇袋子,每個袋子的被選中的機率是1/2。
- 在選擇完袋子之後(假設選擇了袋A,裏面有紅球r個,藍球b個),拿到紅球的概率是 r/(r+b)。
- 那麼選擇紅球的概率是 1/2 * (50-r)/(100-r-b) + 1/2 * r/(r+b)
- 當r=49,b=50時,上式爲 1/2 + 49/99 結果都大於選項的結果。

這裏寫圖片描述
…這個誰會?沒思路看不懂

這裏寫圖片描述
同樣沒思路啊啊啊,想必不是用窮舉…

這裏寫圖片描述
我的答案是瞎蒙的..
分析:
- 由題幹知道,可以構建一個有向圖。每個人都抽象爲圖的一個頂點,方向指向爲紙條上的人名。不允許指向自己;圖的每個頂點擁有兩條邊(一條指向自己,一條指向別的頂點)。

強聯通 :在有向圖G中,如果任意兩個不同的頂點相互可達,則稱該有向圖是強連通的。有向圖G的極大強連通子圖稱爲G的強連通分支
在圖論中,連通圖基於連通的概念。在一個無向圖 G 中,若從頂點vi到頂點vj有路徑相連(當然從vj到vi也一定有路徑),則稱vi和vj是連通的。如果 G 是有向圖,那麼連接vi和vj的路徑中所有的邊都必須同向。如果圖中任意兩點都是連通的,那麼圖被稱作連通圖
連通分量:無向圖 G的一個極大連通子圖稱爲 G的一個連通分量(或連通分支)。連通圖只有一個連通分量,即其自身;非連通的無向圖有多個連通分量。

  • 這麼一判斷,紙上畫個圖,對於選項可以用雙向鏈表存儲其結構,感覺應該是錯的,應該是可以用循環單向鏈表存儲其結構。
  • 感覺遍歷的複雜度是O(n)好像是對的。。

這裏寫圖片描述
我的答案是 31
思路:
- 就是算最少多少位二進制數可以容納20億。2^10 約做10^3,那麼2^30約爲10^9(10億,當然2^30比10億大,比20億小)。於是31是最小值。

這裏寫圖片描述
我的答案:FTP
思路(剛好最近在複習計算機網絡,大概看了下5層模型裏面常用的協議):
- DNS:域名系統,用於域名和ip地址之間的相互映射。在地址欄內輸入天貓的域名,通過dns將域名轉換爲ip地址,屬於應用層協議。
- TCP:傳輸控制協議,應用層的httphttps協議都是基於傳輸層的TCP協議的,屬於運輸層協議。
- IP:網際協議,通過IP進行網絡之間設備的互聯,相當於快遞的地址,屬於網絡層協議。
- ARP:地址解析協議,根據ip地址獲取物理地址(Mac地址),位於五層模型的數據鏈路層。
- ICMP:英特網控制報文協議,用於在ip主機、路由器之間傳送控制消息,不用於傳輸數據,但對於用戶數據傳輸有着重要的作用。屬於網絡層協議。
- FTP:文件傳輸協議,屬於應用層協議,也是一個應用程序。

這裏寫圖片描述
我的答案是 6
思路:

笨辦法,算… 7-3+4-2+3-3+4-4+7-7=6
求個聰明的辦法。。

這裏寫圖片描述
我的答案:第三個
對c++不太熟,更別說相關的庫了。

STL = Standard Template Library:標準模板庫,是一些“容器”的集合。
std:sort不是穩定排序算法,std:stable_sort來保證這一點。

這裏寫圖片描述
…於是出現了對數函數,我還能說什麼?

思路:

這裏寫圖片描述
- 於是g(x) = ax^2-8x+a-6,包含所有正數。
- 當a=0,-8x-6 可以取得所有正數。
- 當a<0,二次函數圖象開口向下,取不到所有正數。
- 當a>0,二次函數圖象開口向上,當a=8時,有一個零點(x=1/2),當a取10時,沒有零點,區不到所有正數。
- 因此答案爲[0,8]

這裏寫圖片描述
概率題,這個不大會…

這裏寫圖片描述
我的答案:a=10,x=2
- 很簡單的三元運算符操作

這裏寫圖片描述
當時筆試的時候我沒做出來。。不過第一道題琢磨懂了之後再看這個還是不難的。。只不過不知道特地支出在Linux系統下是什麼梗..

  • 如果sizeof操作數是函數中的數組形參火函數類型的形參,sizeof給出其指針的大小。參考文章解析c語言的sizeof
  • 在頭文件stdint.h中有如下聲明typedef int int32_t;在int爲4字節的系統typedef int int32_t不用變,使用int32_t則爲4字節;在int爲2字節的系統typedef long int32_t 改變intlong,使用int32_t還是4字節。總的來說,移植到2字系統只改變typedef long int32_t中的int,而不需要全部改變int32_t
  • 所以上面的64位Linux系統應該是煙霧彈,答案應該是40,4。

這裏寫圖片描述
當時學數據結構的時候,哈希表那塊老師沒細講,再加上也沒認真聽(現在回想起來,之前上的課幾乎都後悔沒有認真聽講了…),現在的瞭解都是零零碎碎的…
- 題目不會
- 附上一篇文章哈希表及處理衝突的方法

這裏寫圖片描述
正好前一段時間複習排序算法的時候,特意重點看了快排。
- 根據分析,一輪排序後,主元的所在位置前的所有元素應該小於主元的值,主元之後的所有元素應該大於主元的值,因此14、17、24都有可能是主元(劃分基數).
- 附上我之前寫的關於快排的博客 快速排序的學習中遇到的問題(java)

當時記錄下來的選擇題就是這些了…附加題是Android相關的主觀題,一共三道。花了四個小時重新看了一遍這些題,感覺收穫還是挺大的。

我一同學是報前端的…參加十場前端的筆試,把筆試中不懂的題都搞懂了,也應該就差不多了hahaha

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章