分析:情景题的出题面是很广泛的,但是面试官最想考察的是你的灵活思考能力,即回答要“讨巧”。这里有一个小窍门,把回答引向直白,越直白越好,但最后的落点一定是 花费时间
和 占用空间
上。
情景题一:小白鼠试毒药
大致题意是,有1000瓶试剂,其中只有一瓶是毒药(小白鼠喝了会致死),给你足够的小白鼠,最少需要多少只小白鼠来找到毒药是哪一瓶?
分析:首先试剂很多,要找最少
的小白鼠也就是占用空间最小的方法,马上推用一个bit
来代表一只白鼠,那么要用多少个bit呢。因为 1000 <= 1024
,1024 又是 2 的十次方,因此用 10 只小白鼠即可。
情景题二:证明python的列表list的底层是链表还是数组
分析:先是最直接的概念,链表的存放地址不连续,而数组是连续的,但是这个就是八股文了,得换个思路。首先不给你数量,那么思路就是往 花费时间
靠,当“数量”很大时运行的时长。
回答一:新建一个长度为n的list,打印其每个元素的地址,如果连续
就是数组,反之为链表。
回答二:创建一个长度为 1000 的数组,打印第 999 个元素,记录下运行时间;创建一个长度同为 1000 的链表,打印第 999 个元素,如果list的花费时间和数组相近则为数据,相差很大则为链表。
网友评论