最近去面了几个地方,这里总结一下,按时间顺序排列排名不分先后:
A公司:
svm的原理能不能解释一下:解释的确实不好,对于smo和损失函数没能写出来
X、Y都是向量,那么AX-Y这个向量的1范数最小求A:我说用爬山法优化最值,后来想清楚了,这个是极值点左单调递减,右边单调递增,是有极值的,而且就在折点上
gbdt:能不能解释一下:这个gbm的原理和ls损失函数的梯度问题都说了一下,也还需要多锻炼
写一个快速排序:没怎么写好,代码也还得练
写一个求素数的程序
B公司:
基本上没问算法,就一道笔试题,二叉树的按层遍历
C公司:
有四道笔试题
编程一:二叉树结点上有treasure, 求从根到叶子的一条路径,要求treasure最大化, 这个比较简单
编程二:加油站问题,环形公路上有很多加油站,加油站里面有汽油,gas[]是汽油的量, cost是加油站之间路径的消耗量,问是否存在一点使得汽车在这里能够跑遍整个路线
简答一:一组序列求中位数的问题,这个是二分思想, 时间复杂度是多少,这个我也不太会算, 第二问是流式数据该怎么求,我说用平衡二叉树求近似解,不精确
简答二:写几个机器学习算法,自己比较熟悉的,我写了一个svm,一个神经网络,后来都没问
这个也没问什么问题,就问了下决策树和随机森林,
高潮是,编程题:写个八皇后问题,如果两个皇后在一条线上应该怎么做,主要是需要写出来,没写对
D公司:
程序题:大数相加编程题,要求返回字符串
算法和项目没有印象特别深刻的
二面:
问了一个解决问题的各个步骤该怎么做,包括数据清洗、预处理、算法选择、样本便宜、拟合程度等,都是开放的问题
思维题:4只球队单循环比赛,有两只球队出线,那么积多少分肯定能出线,最低得多少分有出线的可能,后来扩展到n支球队,两个队伍出线,那么多少分肯定出线和最低
多少分有出线的可能,在提示的情况下完成了
后来也问了项目问题
E公司:
第一部门:
编程题:一组序列,整数部分有序,小数部分无序,求出每个整数部分相同序列中的最大值,后来又问了最大的两个,直到最大的K个改怎么求,这个是极小堆
问了一些spark和hadoop的简单问题,这个我都不在行,还有svm和gbdt的算法问了些项目的问题
第二部门:
人机对话中如何提高精确度,有没有什么想法,这个是开放性的问题
能否推一下bp算法,这个比较难,我觉得也就能得一半的分,后来问了下梯度递进的优化方法,就是每次梯度不一样,这样能提高优化速度,后来问了下过拟合,深度神经网络的梯度消失问题,还有使用relu激活函数的时候有些特征被稀疏掉改怎么处理
编程题:按层遍历二叉树,要求第一层从左到右,第二层从右到左,第三层从左到右以此类推,这个写出来了,但不是最优解,还有更简单的方法
F公司:
问了一下倒瓶实验图像的问题,这个比较简单的解释了一下,遇到了一个做过图像的就比较麻烦
能否把svm解释一下,看来svm算法的受欢迎度还是比较广的
蓄水池抽样的问题:这个问题我都忘了,但是在他的提示下解出来了
编程题:写折半查找算法
二面:
解释一下svm,我写了一下损失函数和优化目标,其实写错了,然后问带松弛变量的优化目标
这次是遇到了svm大牛了,给我解释了一下松弛变量和smo的过程,然后说了一下libsvm的优点和各种优化方法
编程题:无向图中的点,给你一个点要求写出deepcopy的程序,相连接的点也要deepcopy,这个比较难,感觉跟八皇后问题差不多
后来问了我一些项目的问题,项目上的事倒是一般都会说
G公司:
使用gbdt的时候调参数都是调哪些参数,还有gbdt的原理能否解释一下
智力题:100个硬币,有10个正的90个反的,用布蒙上不能看,分成两堆,可以翻任何一个硬币,但是不能看,能否保证两堆中向上的硬币个数相同
这个应该点出个条件,就是两堆硬币的数量是可以不同的,否则真是不好做
问了写项目