國內某社交通訊大佬面試題(二)

面試時間:2016/04/07
座標:上海
崗位:iOS開發實習生

額。面試下午兩點開始的。一開始給了一套筆試題。上面就三道題。我就憑記憶大概說一下。
(1)在一個整型數組中找出所有前k大的數。
答:這個問題隨便一搜就很多答案了。。沒啥好說了。。我當時是建了個最小堆保存k個數,第k+1個元素開始和最小堆堆頂元素比較,再判斷是否要移除元素重新建堆。。就說這麼多了。。

(2)給一個正整數n,輸出所有的包括(1—n)的數字作爲節點的BST樹的數目。。比如n=2,結果爲2; n = 3,結果n = 5。如下圖所示:
這裏寫圖片描述

答:我使用了遞歸的方法。一開始畫了n = 4的情況分析找規律。然後發現只需要計算以某個值n=i作爲根節點,遞歸計算其左右子樹的情況然後想乘即可得結果了。(記得BST有個特性就是右子樹中所有節點值都小於父節點值,左子樹中所有節點值都大於父節點)。
所以我們拿n=4來分析的話就是,分別以1,2,3,4作爲根節點時:
(PS: 我們可以把空子樹看做是一種特殊的子樹情況)

  • 當 root = 1時;計算空右子樹和[2,3,4]組成的左子樹。而2,3,4組成的左子樹則剛好是n=3結果。
  • 當 root = 2時;計算[1]右子樹和[3,4]左子樹,這是相對簡單的兩個情況。
  • 當root = 3時;計算[1, 2]右子樹和[4]左子樹;
  • 當root = 4時;計算[1,2,3]右子樹和空右子樹;

額大概就是這樣的一個過程了。。代碼我就懶得寫了。。有空補上吧哈哈哈。。。

(3)有一輛火車需要從A地運送煤炭到B地,其中A距離B地1000米。起始A地有3000煤炭,火車一次最多拉1000煤炭,並且火車每走1米則消耗1煤炭。問怎樣運輸可以使得B地的煤炭最多?

答:= =。我不知道最終答案。這題大家注意兩種情況,一種是火車返回時候不消耗煤炭,另一種則是火車返回也消耗煤炭。。兩種情況計算結果是不一樣的。。
我直接給我在兩種情況下的計算結果吧,有能算出更多的結果的記得分享分享!
第一種:第一段走334,第二段走499,第三段走157,B地剩843。
第二種:第一段走200,第二段走334,第三段走466,B地剩534。

然後開始各種面試了。我大概想了一下就是以下的問題吧。
1、自我介紹
2、項目介紹,其中哪個項目印象最深刻、怎麼做的
3、STL
4、iOS開發有哪些方式寫界面,最常用哪種,代碼佈局
5、多線程方式有哪些
6、數據持久化方式有哪些
7、操作系統中的內存管理,分頁管理
8、還有一些其他亂七八糟的,不記得了。。。

然後又甩了一道題給我做。。。沒錯又寫代碼鳥。。。這個就不說了吧哈哈哈哈

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