BD面试——二面

1点59,电话响了,010的!我早已在大灵寝室准备着了(寝室的亲爱们在觉觉,怕打扰她们,所以去了别的寝室)。

 没有自我介绍,直接让我说在Tecent实习所做的项目,我就先解释了下我在那没做什么项目,因为实习生没有权限,平时就是给我们做些培训,听些讲座,然后做些小任务。然后说了下自己觉得最有挑战的任务,大致介绍了下。接下来就全是问题了:(面试之前一直紧张来着,不过问到第一题后,就一点都不紧张了,也不知道自己怎么了,居然紧张得午觉都没睡好!)

1.一个给定数组,存在一个递增子序列,这个递增子序列大于其前面的所有数,小于其后面的所有数。问如何找到这样的子序列位置。我说我有个最笨的方法,两重循环,第一重判断当前元素是否为从0到当前位置的最大元素,如果是,从当前元素开始第二重循环,判断当前元素是否为从它到末尾的最小元素。然后问了下时间复杂度,O(n^2)。完事后让优化,我想了会,终于想到了个方法,时间复杂度为O(n),我自己认为。然后说了思路,最开始设置第一个元素为max,最后一个元素为min。从数组首开始向后扫描,并更新max,当max >= min时,当前下标向前回退一个,然后从数组尾开始向前扫描,并更新min,当max == min时,该处的元素即为我们要找的子序列的最后一个元素(如果是找这样子的一个数,就成功结束),从当前元素开始向前回退,当回退到a[i] > a[i+1]处时,i+2处便是要找的递增子序列的开始处。

回答完后,让我想想还有没有其他方法,我想了会,说中位数的方法这个地方不适用,求第K大数的方法在这也不适用,想不出来其他方法了。

2.给定一些列数,要找出最大的50个数。用最大堆,建一由50个元素组成的最大堆,即得出所求。

3.在用户输入搜索词时,系统会给出推荐词。比如输入天,下面会出现推荐词天气,天龙八部等词。问这些词是如何得来的。我就说可以根据前缀得来,有共同前缀的词有很多,这个时候就将出现频率高或者是被搜频率高的词列出来。再问除了频率,有其他的方法么,我想了下,问他是否有一种规则来建立词,这样子通过自动机的方式,当给出前缀时,可以由自动机推出哪些词,他说这是另一个方面。我想了想,感觉目前基本都是基于统计的吧,也想不去其他的,就说暂时不知道别的了。

4.在3的基础上继续问,如何实现这样子的功能,使得用户输入前缀时,能迅速推荐出相关的搜索词。目前有一个文件,里面存的是词和相应的频率。我就反问他是否可以这样子:每个前缀对应一个小库,库里面是与前缀相关的词。然后每输入这个前缀时,用hash迅速定位到该库,然后选出其中频率最高的几个词最为推荐用。他说可以。我就接着说下面的步骤:先将这些词按照前缀分类,比如含有“天”这样子的前缀分为一类,并且还要考虑更长的前缀,比如将“天”所对应的类中的所有含有“天气”的前缀的词再分出来做为一个对等的类。并且每类中的词按照频率排好序。这样子就可以了。

基本上就问了这些东西,最后问我有什么要问他的,我就问了下,目前的所有搜索引擎的框架是否都是基于google 的大体框架的。他说差不多,现在不在框架上下功夫,而是把精力放在别的优化改进上,其实我想知道,有没有一种可能去突破google的框架,而是用一种全新的东西来做搜索引擎的框架,比如像人的思维那样子的,我也说不清楚,所以估计也没问清楚,不过后来想想也是,海量的数据,不基于统计还能基于什么呢!再问了下他们有不有自己的分词,他说有!到这我也没啥问的了,说出了最后一个疑问,如果能三面的话,什么时候有消息,一周之内,哎,又是一周,我都面烦了!这个战线拖得太长了,我还要考公务员呢,哪有时间啦!

还有20天,我要好好准备,考公务员!加油加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值