1. 程式人生 > >python面試之騰訊測試開發工程師

python面試之騰訊測試開發工程師

今天面試了騰訊的測試開發工程師崗位,總體感覺一般,問的問題都還是比較基礎性的東西,當然也問了很多實習期間做的專案,各佔一半吧。下面基礎部分的東西總結一下:

1、假定我有100M的一個文字資料,但是我的電腦記憶體只有10M,我怎麼在有限的資源條件的情況下,找出這個文字中出現次數最多的那一行字串?

解決思路:說來也巧,其實這不難,只是有時候突然沒了思路,靈感來自於一個小學妹的一句話,他最近在搞數學競賽,我想,數學。。。數字,我將字串轉成數字不就成了,但是怎麼轉成特定數字呢?要轉成特定的數字用hash不就搞定了,相同的hash值自增,最後最大值的hash值的value對應的hash值的字串不就想要的字串嘛

2、什麼是最大堆(大頂堆),堆排序的時間複雜度是多少?

         堆可以看做一個完全二叉樹,同時該完全二叉樹滿足雙親結點大於等於孩子結點(大頂堆),或者雙親結點小於等於孩子結點(小頂堆)

         堆排序:堆排序也分為兩個過程:(1)將初始化序列調整成為一個大頂堆(2)用最後一個元素和堆頂元素交換,然後不斷調整剩下的元素成為一個新的大頂堆。

         堆排序的時間複雜度:o(nlogn)

          其他排序演算法常見時間複雜度:

        è¿éåå¾çæè¿°

3、二叉樹:

       滿二叉樹:一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果一個二叉樹的層數為K,且結點總數是(2^k) -1 ,則它就是滿二叉樹。

     平衡二叉樹:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。

     完全二叉樹:完全二叉樹是由滿二叉樹而引出來的。對於深度為K的,有n個結點的二叉樹,當且僅當其每一個結點都與深度為K的滿二叉樹中編號從1至n的結點一一對應時稱之為完全二叉樹。

      

4、用Python的面向物件思想,實現一個連結串列的插入和刪除。

參見部落格:Python基礎之堆疊基礎的二次程式碼封裝