M公司面试记

    一面:数据结构。1.hash table。怎么样用hash表存储字符串?用指针数组存储,用链表解决地址冲突。指针指向节点的数据结构包括key、value、指向冲突的下一节点。2.给定有序表,可以用二分查找。现在从中间任意位置将数组分为两部分,将其交换。如1,2,3,4,5,6,7.从2切分数组,再交换的结果为3,4,5,6,7,1,2.如何对这个数组进行查找?还是二分查找的思想。先比较中间元素是否等于key。如果相等,则结束;如果A[mid]>key,比较A[0]和key。若A[0]<key,则在A[0]和A[mid-1]之间找;否则在A[mid+1]和A[N]之间找。如果A[mid]<key,在A[mid+1]和A[N]之间找。3.给定一个元素个数为million级的集合,找出其中的前K大个元素。用一个K个元素的小顶堆即可,时间复杂度为O(N),空间复杂度为O(K).4.讲一下对Trie树、B树的理解。

   
     二面:数据挖掘。1.给定一个数组,元素完全相同,如何降低快排的时间复杂度?2.给一个数组,如1,1,1,2,3.写一个随机函数,返回某个值的概率等于这个值在给定数组中出现的频率相等,可以调用系统提供的随机生成函数。写测试用例

    三面:coding。先问我用什么语言,我是c或java。他们主要是c++,但是没关系。1.先用java写个stack类,包括常见的属性和方法。我写的Stack类中,属性有数组、栈顶指针、栈的最大元素个数;方法有push、pop、isEmpty、isFull、size。2.用c实现字符串中单词的逆转。如:“abcd abc ab”,结果为“ab abc abcd”。我当方法是先对整个字符串做reverse,需要O(N)的复杂度,然后对每个单词reverse。最终算法的复杂度为O(N)3.算法题。给定N个加油站,每个站点有不同数量的燃料,站点间距离不同,所有站点的燃料和刚好可以跑完全部站点。由于从某些站点出发, 汽车所加的燃料不足以跑完某段路程 ,需要以O(N)的复杂度选择一个站点,使得从该站点出发,可以跑完所有站点。我提到了动态规划,面试官看时间差不多了,就告诉我解决方案,让我分析这个方案的可行性。我大概证明了一下,解释了原因。他的解法是:从任意一个站点出发,到达某个路段,如果停在路中间,说明前面走过的站点均不可能是最终的解。这个方法挺NB的。

        其他问题: 你们 实验室的方向和公司用的东西不一样,你怎么看这个问题?时间上能否保证?导师签字?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值