iT邦幫忙

2

[大家來找茶]看到一個有趣的議題大家可討論一下

在參加騰訊2016實習生招聘面試時,有兩道問題自己沒有想清楚也思考的不是很明白,面試結束時後悔沒有問面試官正解是什麼,回來後在搜索引擎上也沒有搜到相關的問題。

  1. 第一道題目:在多線程和大量並發環境下,如果有一個平均運行一百萬次出現一次的bug, 你如何調試這個bug。題主對於這種比較大的工程沒有接觸過所以沒有這方面的經驗,我回答的是:首先要試圖重現這個bug,在重現bug時,需要保留當時的一些狀態信息,然後進行調試,依次確定與這個bug有關的模塊(加樁和驅動)。聽到我的回答後,面試官說這個bug很難重現,這個時候你要怎麼處理或者重現呢。我回答說:那麼這個bug出現的概率比較小,如果沒有造成太大的影響能不能忽略。然後面試官說那10W次出現一次呢, 之後我就沒有了想法。

  2. 第二道題目的題意我不理解,題目是面試官給我的試卷上面的。題目描述:有一個類指針,指向類實例化的對象,在這個對象程序的運行過程中,程序崩潰了,後來發現是這個類指針的虛函數表被破壞了,現在如何定位這個問題。我把"如何定位這個問題"理解的是如何定位這個bug所在,然後我回答:知道虛函數表被破壞了,那麼問題不是在這裡嗎,可以依次確定是不是調用了應該調用的虛函數。然後面試官說虛函數表裡面的內容沒有問題,之後我有點蒙了,我回答說那是不是指向虛函數表的指針被破壞了。面試官說你可能沒有理解題意,所以我比較鬱悶,是不是還有另外的原因。

以下開放討論~~!


1
總裁
iT邦好手 1 級 ‧ 2016-08-30 17:09:08

/images/emoticon/emoticon06.gif

/images/emoticon/emoticon06.gif

/images/emoticon/emoticon06.gif

2
fillano
iT邦超人 1 級 ‧ 2016-08-30 17:19:17

雖然沒在用C++,但是第二個問題是跟C++相關的。查了一下,可能跟這個stackoverflow的問題相關:
http://stackoverflow.com/questions/3065154/undefined-reference-to-vtable

費公太專業了~~!

fillano iT邦超人 1 級‧ 2016-08-30 18:06:00 檢舉

其實我也不熟,只是剛好知道C++實作物件導向相關的技術概念跟關鍵字。

1
海綿寶寶
iT邦大神 1 級 ‧ 2016-08-30 19:11:00

阿鬼,你還是說英文好了
/images/emoticon/emoticon06.gif

看更多先前的回應...收起先前的回應...

我真是糊塗了,居然以為是老鷹大大去參加騰訊面試
差點中計了
這裡有102個回答,有興趣的人可以看看
知乎連結

哈哈!
就是知乎看的,覺得很有趣的題目~~!

fillano iT邦超人 1 級‧ 2016-08-31 10:09:08 檢舉

原來是知乎看來的...不知道上面有怎樣的回答...

奇怪,我怎麼自動把關鍵字轉成英文來google了XD

最近閒來無事就會看看知乎,上面的解答越來越專業!

2
一尾
iT邦研究生 1 級 ‧ 2016-08-31 07:55:57

不論要不要換工作

我也覺得有空多去面試幾家公司

一方面了解外面有哪些人力需求

另一方面也能試試自己還有多少斤兩

2
fillano
iT邦超人 1 級 ‧ 2016-08-31 08:13:22

問題一的話也沒經驗(服務沒人用XD),不過剛剛找資料看到好玩的東西...

首先是Java對於Concurrent的支援: http://www.javaworld.com/article/2078809/java-concurrency/java-concurrency-java-101-the-next-generation-java-concurrency-without-the-pain-part-1.html

然後...即使是這樣,Netflix還是在高負載時出問題: https://github.com/Netflix/Hystrix/issues/985

最後抓到問題,跟GC有關,影響到Java Concurrent機制的運作...

回到問題一,如果我想要重現問題的話,我會先嘗試把系統安裝在資源受限的系統,尤其讓cpu、記憶體、iops等表現較差,然後做壓測...看看這樣會不會讓問題在更小的併發時就會發生。(當然log不能少)不過這類問題的發生跟架構、程式語言、工具都會有關係,沒有細節就很難找到好的劍來解決問題。

另外,一些測試工具似乎往「控制執行緒交錯」的方向發展,例如IBM的ConTest,另外也找到一些文章,例如Finding Complex Concurrency Bugs in Large Multi-Threaded ApplicationsMaple: A Coverage-Driven Testing Tool for Multithreaded Programs,都是關於這樣的測試技術,如何有效地找出問題。簡單說,就是透過控制執行緒的運行,讓不同執行緒之間交錯的各種可能情況盡量發生,來提高發生問題的機會,以找出問題。Mapple還會記錄執行緒交錯的組合及做過的測試,用測試覆蓋率來確保測試有效率地執行等等。

看更多先前的回應...收起先前的回應...

什麼叫專業?
這才叫專業
/images/emoticon/emoticon32.gif

fillano iT邦超人 1 級‧ 2016-08-31 09:06:49 檢舉

也不算專業啦,只是google查一下...

賽門 iT邦超人 1 級‧ 2016-08-31 09:31:03 檢舉

費大公是真正專業,佩服!

/images/emoticon/emoticon34.gif

/images/emoticon/emoticon33.gif/images/emoticon/emoticon34.gif/images/emoticon/emoticon32.gif

0
李大瑋
iT邦研究生 3 級 ‧ 2016-08-31 08:49:26

怎麼這些中文看起來跟英文一樣
拆開來都看得懂,合再一起就看不懂了
我看你說台語我應該可以多聽懂一點

看更多先前的回應...收起先前的回應...
賽門 iT邦超人 1 級‧ 2016-08-31 09:34:08 檢舉

I do believe that you won't understand what the questions are even the Eagle speaks Taiwanese.

李大瑋 iT邦研究生 3 級‧ 2016-08-31 10:19:05 檢舉

賽門說的也對啦

我還是搞硬體外加唬爛就好

太難的...我還是不要碰好了

騙錢麻....這麼專業幹嘛...

賽門的應該我居然看得懂...真難得

李大瑋 iT邦研究生 3 級‧ 2016-08-31 10:23:09 檢舉

賽門的""英文""我居然看得懂...真難得

抱歉今天感冒頭很暈

尼克 iT邦高手 1 級‧ 2016-08-31 10:25:48 檢舉

Today is english day.

賽門 iT邦超人 1 級‧ 2016-08-31 10:39:45 檢舉

Yeah~~Nick the Wolf, let's RNR.

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2016-08-31 14:27:36

看一下知乎的回答可以看一下Milo Yip的回答很不錯!!
大家可以看一下~~!

我要留言

立即登入留言