最近发现自己好多原来学过的东西都忘记了,是时候该补补复习一下了。先来几个题目问下自己。
(1)字符串里的查找用什么算法?
(2)Dijstra算法
(3)红黑树
(4)有这样一个数据结构:有一个新定义的队列结构,可以push和pop,你还可以知道这个数据结构里的最小值是多少。所有操作(push、pop和得出最小值)都要在常数时间内完成。请你设计这个数据结构。
(5)怎样在1000000个数里找出最大的m个数,请设计一个尽可能优化的算法。
(6)网络编程需要了解
(7)多了解并尝试一下设计模式
(8)做过的东西最好去了解一下底层实现,比如用到了map,那map如何实现?用到了matlab神经网络库,那matlab底层是如何实现这个库的函数的?jsoup爬虫又是如何实现的?多想想,多问问自己,多探究,这才是个好的programmer!
总的来说呢,数据库和数据结构算法是拉开程序员差距的两个学科,一定要好好巩固啊~!
接下来是BD NLP面试题
C++ : 1.拷贝构造函数和重载=符分别在什么情况下被调用,实现有什么区别 2.虚函数的目的,虚函数和模板类的区别,如何找到虚函数 常规算法: 1. 如何输出一个集合的所有真子集,递归和非递归的方法。 智力题: 1. 有100W个集合,每个集合中的word是同义词,同义词具有传递性, 比如集合1中有word a, 集合2中也有word a, 则集合1 ,2中所有词都是同义词,对这100W个集合进行归并,同义词都在一个集合当中 2. 有100W个集合,每个集合中有一些词, 对于每个集合 , 找出他是哪些集合的真子集 开放题: 1. 我只有一大批实体词, 如何对他们进行聚类(无监督聚类), 如何找出这些词中, 哪些词之间有关系, 是强关系还是弱关系, 具体是什么关系,(如刘德华和朱丽倩 属于娱乐分类, 是强关系, 关系为夫妻) |
NLP内推面试题
(1)概率题
有两枚硬币A和B,A正面的概率为0.6,B正面的概率为0.5.现在扔了一枚硬币显示为正面,问:该枚硬币是A的概率是多少?
贝叶斯联合概率,P(A)= 0.6 /(0.6+0.5)
(2)有一个数组,里面有正数也有负数,要你写出算法,求出里面的和最大的子区间。
思路1:用三层循环暴力解决,时间复杂度为O(N3)
思路2:动态规划解决,二维数组d[i][j],i代表起始下标,j代表终止下标,然后d[i][j+1] = max{d[i][j] + a[j+1], d[i][j]}, d[i-1][j] = ````
具体我就不写了,反正是动态规划的思路解决
(3)二分查找
这个其实简单,迭代和递归都可以解决,具体不多说了
(4)概率题,有个癌症,早期的治愈率为0.8,中期的治愈率为0.5,晚期的治愈率为0.2.若早期没治好就会转为中期,中期没治好就会变成晚期。
现在有一个人被诊断为癌症早期,然后被治愈了,问他被误诊为癌症的概率是多少?
(5)最终大boss题
有1亿个货物,不能单个单个检测,只能通过两两对比来找出其中的次品,请设计一个算法来找出次品。
最小连通图?分布式?到底想考神马,若有人知道答案跪求评论!