在参加腾讯2016实习生招聘面试时,有两道问题自己没有想清楚也思考的不是很明白,面试结束时后悔没有问面试官正解是什么,回来后在搜索引擎上也没有搜到相关的问题。
第一道题目:在多线程和大量并发环境下,如果有一个平均运行一百万次出现一次的bug, 你如何调试这个bug。题主对于这种比较大的工程没有接触过所以没有这方面的经验,我回答的是:首先要试图重现这个bug,在重现bug时,需要保留当时的一些状态信息,然后进行调试,依次确定与这个bug有关的模块(加桩和驱动)。听到我的回答后,面试官说这个bug很难重现,这个时候你要怎么处理或者重现呢。我回答说:那么这个bug出现的概率比较小,如果没有造成太大的影响能不能忽略。然后面试官说那10W次出现一次呢, 之后我就没有了想法。
第二道题目的题意我不理解,题目是面试官给我的试卷上面的。题目描述:有一个类指针,指向类实例化的对象,在这个对象程序的运行过程中,程序崩溃了,后来发现是这个类指针的虚函数表被破坏了,现在如何定位这个问题。我把"如何定位这个问题"理解的是如何定位这个bug所在,然后我回答:知道虚函数表被破坏了,那么问题不是在这里吗,可以依次确定是不是调用了应该调用的虚函数。然后面试官说虚函数表里面的内容没有问题,之后我有点蒙了,我回答说那是不是指向虚函数表的指针被破坏了。面试官说你可能没有理解题意,所以我比较郁闷,是不是还有另外的原因。
以下开放讨论~~!