阿里信息二面6.1---最汗流浹背的一集,先是自我介紹,然后問了一下職業(yè)規(guī)劃。①一個線程和協(xié)程之間區(qū)別②協(xié)程的兩種類型(這我真不會)之后就是兩道場景題手撕①給定一個input文件,文件中有大量的不重復(fù)的數(shù)字,數(shù)字的范圍不超過七位數(shù),內(nèi)存空間只給2MB,如何排序后輸出到一個ouput文件中。這里我首先說用歸并排序的思想來做,每次從文件中讀取2MB數(shù)據(jù)到內(nèi)存中進(jìn)行排序,再將文件輸出到一個result_1.txt文件中,以此類推得到result_n.txt文件,由于這些臨時(shí)文件內(nèi)部有序,可以每次從這些文件中讀取下一個數(shù)字,依次將最小的數(shù)字寫入到ouput文件中。(面試官說可以,但是不太滿意,因?yàn)檫@種方式會產(chǎn)生大量的文件io,效率低下,要求我用一次讀寫io來實(shí)現(xiàn))之后就是第二個思路,由于數(shù)字的范圍優(yōu)先,那我就可以開辟一個固定大小的數(shù)組,然后將數(shù)字作為下標(biāo),將對應(yīng)下標(biāo)的數(shù)組的值置為1,這樣就能表示這個數(shù)字是否存在,但是這種思路會超內(nèi)存,因?yàn)?0^8 * 8 = 10MB(大約),超出了2MB的要求。要我考慮能不能用bit做,我說了思路,每個字節(jié)的01表示8個數(shù)字的是否存在,面試官認(rèn)可,接著又拋出第二個問題:如果是數(shù)字在某一區(qū)間比較稀疏,如何優(yōu)化效率最后問我知不知道bitmap,讓我用bitmap做(不會)②給定一個十六進(jìn)制數(shù)組(byte[]),如何將十六進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)的字符串類型,例如{0x11,0xff} -> &quot;11ff&quot;,這個對來說簡單了,先弄一個16長的數(shù)組 []string, 下標(biāo)對應(yīng)字符串,然后遍歷十六進(jìn)制數(shù)組,將十六進(jìn)制數(shù)拆分成4bit兩部分,每個4bit轉(zhuǎn)換成十進(jìn)制,拼接對應(yīng)數(shù)組[]string下標(biāo)中的字符串即可代碼如下:for i:=0;i<len(nums);i++{left := int8(nums[i]) &amp; int8(0x0f)right := int8(nums[i]) > 4result += str[left] + str[right]}6.3-----------------------------已掛學(xué)到了很多東西但是技術(shù)棧不太契合,做C++的,算法第一題bitmap沒做出來,留下了遺憾吧。至此阿里所有部門都掛了,大概之后都和阿里無緣了。