1. 程式人生 > >阿里巴巴2013實習生5.5號(測試開發)筆試!

阿里巴巴2013實習生5.5號(測試開發)筆試!

           阿里發簡訊跟郵件通知5.5號下午2點西十二筆試。

       提前到達教室,拿到卷子一看,傻眼了!尼瑪,好吧,估計又是醬油了!阿里的題目確實比騰訊難多了,怪不得當時聽阿里宣講會的時候,一個“碼神”說過30分就會給面試機會。阿里考概率的題目比較多,看來阿里很看重概率方面的知識。不過有一個選擇題知道怎麼做,結果在開3次方的時候開錯了,尼瑪!能不能不要這麼悲劇啊抓狂。反正好多題目都不會啊,什麼“數星星”、“明星群眾”都不懂啊,最後一個演算法題,更是一點思路都沒有。前面的所有題目,研發、測試開發、演算法工程師都是一樣的。測試類的最後還有一個附加測試題目,隨便寫了一點。下面說一下那個“數星星”問題。

       題意:A和B,晚上閒來無事,開始數星星(我看到題目的時候就在想,他倆一定是閒的蛋疼偷笑。沒事,你打局遊戲啊;沒事,你看個電影啊;沒事,你數什麼星星啊大笑),每次只能數k個,20<=k<=30,A先數,誰數完最後一組誰獲勝,問星星總數為4個選項中哪一個的時候,A必勝。(我覺的這個題最後應該補充一句:最後一組可以小於20)

        思路:A第一次數20-30之間,為了讓自己勝利,他最後留給B的星星數為31-50(也就是當剩下31-50顆星星時,無論B怎麼數,A一定取勝,)並且從第二次開始,A數的星星個數為50-B數的星星個數。當這兩個條件同時滿足時,A一定取勝。   至於為什麼是50,現給出解釋:如果是49,則當B數30個時,留給A的是19,不滿足條件;當是51,則當B數20個時候,留給A的是31,不滿足條件;只有當是50時,無論B怎麼數,留給A的都符合條件。此題的關鍵就是找出這個50。當明白了以上幾點的話,下面寫出大體公式

         星星總數:20~30+50*k+31~50(也就是總數除以50的餘數得同時滿足開始條件20~30和結束條件31~50)

         以第一個選項2013為例,2013%50=13,這個時候得向高位借50,即2013/50=39,2013%50=63.接下來驗證63是否滿足開始條件和結束條件。63-(20~30)都落在31~50之間,滿足條件。(貌似這個題只有選項2013滿足)

        下面舉個反例2888,2888%50=38(38向不向高位借50都不滿足,如果借50則餘數為88),驗證38或88不同時滿足初始條件和結束條件。

        補充:正在等通知中,話說要等到19號那一批筆試完後才發通知!

        後記:沒收到阿里的通知,結果也在意料之中。