滴滴出行算法工程师社招面经

滴滴出行

一面:

1. 1000桶水有一桶有毒,一头猪喝了有毒的水之后过15分钟会死掉,问最少需要多少头猪来找到有毒的水,在一个小时之内;

2. 文本分类项目;

3. 工作项目;

4. 括号匹配问题,给一个不匹配额括号串,只包含左括号和右括号,这个串去掉一个字符可以变成匹配串,找到所有可能的匹配串;

5. 线程和进程的区别;

6.两个线程同时访问同一段代码程序。

二面:

1. 工作的项目内容问的比一面更详细;

2. 多个有序数组求交集;

3. 多个有序数组求并集;

4. 旋转数组中的查找;

5. SVM;

三面:

1. 内容,顺便问了learning to rank;

2. 离散型属工作性和连续性属性的优缺点,连续性属性离散化的好处和坏处,好处就是可以维度扩展,从而可以训练处非线性模型,坏处就是容易过拟合,过拟合了之后怎么解决?计入正则项,或者去看离散化之后的特征,哪个特征所包含的样本太少的话就把这维特征去掉,去噪声,在特征的数量上进行制约;

3.有m件物品,每件物品分别有不同的重量是一个m大小的数组,n个背包1~n编号,每个背包的容量为T,把物品往背包里面装,一个背包在容量运行的范围内可以装多个物品,但是装背包必须按照背包的编号来,并且开始往第二个背包里面装物品之后就不能再往前面的背包里面装了,问最多可以装多少件物品。(类似买卖k次股票的问题)

全部评论
第一道题怎么做啊
点赞 回复 分享
发布于 2020-07-21 12:30

相关推荐

这一次面试真的很感慨,能走到三面已经是我意料之外了。非常感谢我遇到的各位面试官,很和蔼,我不会的问题引导着我去思考,我也深刻地认识到我对于各个组件的底层原理理解的薄弱。一面:拷打了一些八股,对于我简历上的项目问了更深的一个层次,我勉勉强强回答上来,在问的过程中问到了一些偏底层的东西,比如说:C++在分配内存,操作系统,CPU等都做了些什么工作,为什么能够分配内存等。手撕了一道算法题,秒了。二面:被匹配到了基础平台研发部门,不得不承认这个部门的面试很难,开局手撕了两道算法题,秒了。然后没有问任何项目相关的问题,问了很多基础的知识,又一次问到了C++智能指针相关,C++虚拟内存分配等,malloc分配内存的全过程(如前128K使用了哪些系统调用,后面使用了哪些系统调用,这些调用做出了哪些优化等);TCP相关的一些知识;僵尸进程等相关知识点。答得磕磕绊绊,面完半个月没有信息,以为挂了,结果走到了三面。三面:面试官是一个很和蔼的大叔。当时的面试状态也非常糟糕,面的一塌糊涂,把面试官都面笑了,不知道该问我什么了。先是根据之前的面评,问了更底层的智能指针(共享指针部分)让我手写一个共享指针(非模板库)。我对于这些知识很多仅限于理论,平常都是写一些算法,项目上只是会用即可,有时候用法也记不清需要现查,确实很少用过这些。我凭借着印象大概描述了一下,存在优化上的问题。后面谈到了交叉引用,面试官让我用模板库里的实现一个交叉引用的案例,实话实说,想不起来。后面面试官又挑了redis问了关于快照与日志相关的问题,问到了快照在内存上是如何操作的,在保存为快照的过程中依旧会有缓存的更新,redis与操作系统都做了哪些工作等。不会,我凭理解与印象回答了一部分,答得不对。等等等等,一大堆抽象的事情。手撕代码并不是算法题,没有写过这种题,不会,真的想不出来。大致意思是有一个链表,你不能将其放到内存中,你有一个函数getnext可以取下一个数据,你不知道有多少个数据,你有一个函数next可以判断是否还有下一个。现在你需要随机的等概率的取出K个节点(每一个节点被选择的概率均为一样的),我的思路被驳回了,链表只能扫描一遍,不能重复扫描,各个节点之间被选择必须是独立的,选择节点必须是等概率的。最后没写出来。挂了。很难受很惋惜也很感慨。也怨不得别人,菜了就是菜了,挨打就立正。下去接着下功夫吧,只能看客户端能不能把我捞起来,或者春招再战。不过拼多多的工作强度确实很大啊,哈哈,一面的面试官一脸的憔悴,黑眼圈特别大。
查看11道真题和解析
点赞 评论 收藏
分享
评论
3
25
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务