2019騰訊測試開發實習一面,當場掛(2019.03.2716:00)

吃完晚飯回來,登上騰訊招聘一看,自己已經掛掉了,涼涼,第一次面試。

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190327191050781.png?x-oss-process=image/watermark,tye_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwMjQyOTg3,size_16,color_FFFFFF,t_7
好吧,既然頭一次面試,那就着重介紹下,爲以後好長的工作之路做個鋪墊。

其實在幾天前的傍晚突然接到消息要被騰訊面試,還是有點慌張。但又有點驚喜,至少簡歷被撈起來了,不至於簡歷就被刷了。

在抉擇要不要推遲面試時候——因爲本來今天下午研究生複試面試我需要協助,後來想一想,還是多個機會找工作比較好。即使掛了,也能留個經驗。

於是忐忑中接受了面試。

從昨天到今天,在網上找了不少可能會問到的問題。我是朝着測試的方向去了解,看別人一面都會問很多寬泛的問題,涉及計算機網絡,操作系統,java,Linux,還有測試等等。現在看,一個都沒用上。

因爲面試官上來就是兩道編程題砸過來。

一道查找,沒有規定語言。

一道反轉字符串,LeetCode原題,然鵝我沒有刷過,所以自然不會。

三點多就清理了桌面,測試了視頻連接,就很緊張的等待面試到來。本來約的四點開始,我提前十分鐘就進來等着,直到四點幾分面試官才進來。

我一看男的,有點歲數,就知道是個人精。

本想客套幾句,人家也不搭理,根本沒提自我介紹的事兒——原來都不是按套路來。

他說:這樣吧,我先給你兩道題,你做,做完了我們再聊。

我:。。。自感大事不妙。因爲編程能力確實和本專業差距有一定的,而且刷的題也不多,就劍指看了幾道。

沒辦法,只好硬着頭皮上。

時間一點點過去,我還是沒有別出來。可能中午沒睡覺,所以在想思路是有點蒙,或者是因爲緊張?

幾十分鐘過去了。面試官在我編程的時候把視頻關了,其實這是個很好的機會。。。然而我沒有把握住。

到最後自知做不出來也就不浪費時間了,發起視頻。

面試官:做出來了?

我:沒有。。。

面試官:那就這樣吧,今天就到這裏吧,好吧?

我:有點不甘心,雖然我沒做出來,老師能不能給指點一下思路?

面試官:其實這都是很簡單的題目,沒做出來,那。。。

話都說到這份上了,也就不廢話了。

面試官可能覺得有點僵硬,就說了聲:謝謝你哈!

我也只好回了聲謝謝。

其實本來以爲如果上來問問各種問題穿插一個編程,我覺得還能答上來一些,這麼搞,完全不給我存活的機會啊!

不過話說回來,只能說明自己太菜,技術路上還有很長的路要走,包括面試經驗,編程經驗。

這幾天很慌,雖然不知道會掛在哪一步,但求走過來早點結束求個心安,因爲週六還有考試。

也不是求安慰,只是覺得無論結果如何,過來了經歷了就多了一份收穫,明白了差距,認清了現實,瞭解了自己,清晰了接下來要做什麼。

如此,就挺好。

最後開始總結吧!

題目的確不算難,搜了一下屬於常規題,奈何自己就是不會。

編程題:

1.有一個一維數組int a[100],裏面存儲的是1到100的這100個數,不過是亂序存儲;這時把其中某一位置的數值改成-1;請用最優的空間複雜性和時間複雜性求出該位置和值。
請寫出代碼, 語言不限。

思路:遍歷數組得到-1的位置並記錄,同時把非-1的值相加得到sum

參考鏈接:https://www.cnblogs.com/james111/p/7466517.html

代碼如下所示:

public static void find(int[] nums) {
        int sum=0, idx=-1;
        for(int i=0;i<nums.length;i++){
            if(nums[i]==-1){
                idx=i;
            }else{
                sum+=nums[i];
            }
        }
        System.out.println(5050-sum);
        System.out.println(idx);
    }

參考鏈接:
https://blog.csdn.net/liutaotaotaotaotao/article/details/79975936
https://blog.csdn.net/qq_17550379/article/details/80696835

2.【LeetCode難題解題思路(Java版)】25. k個一組翻轉鏈表 給出一個鏈表,每 k 個節點一組進行翻轉,並返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。

示例 :給定這個鏈表:1->2->3->4->5 當 k = 2 時,應當返回: 2->1->4->3->5 當 k = 3 時,應當返回:
3->2->1->4->5

說明 :你的算法只能使用常數的額外空間。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

先找到前K個節點,將其翻轉,剩下的結點,使用遞歸的方法進行處理。前K個節點翻轉算法,是將頭節點從鏈表中切掉,放在當前鏈表的末端,切除K次,即可將鏈表翻轉。

代碼如下所示:

public ListNode reverseKGroup(ListNode head, int k) {
        ListNode current_node = head;
        int count = 0;
        while (current_node != null && count != k) {
            current_node = current_node.next;
            count++;
        }
        if (count == k) {
            current_node = reverseKGroup(current_node, k);/// 遞歸的解決子問題
            while (count-- > 0) {
                ListNode temp = head.next;
                head.next = current_node;
                current_node = head;
                head = temp;
            }///最終,該段的所有節點將會截空,head應指向current_node
            head = current_node;
        }
        return head;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章