面的是知乎的数据挖掘岗位。很喜欢知乎的工作环境。
首先是一个很年轻 的面试官,面试官特别和蔼。首先自我介绍,然后询问项目。面试官对我的一个利用深度学习来做生物图像的项目很感兴趣,具体介绍了一遍,使用了CNN+RNN,RNN的输入是一个时序的图像的特征(10个图像块),问:1、如何操作 将10个图像的特征向量输入到RNN?2、如何评价CNN模型,什么样的结果是过拟合,如何消除过拟合?3、CNN有几层,具体参数?4、如何在是时序图像中追踪同一个对象?怎么说,这个项目我没有做完,有些问题答的都是一知半解。
接下来让我介绍一下了解的机器学习算法,让我讲一下最了解的算法,我说了SVM,接着给面试官推导了一遍。面试官又问了有没有实际应用这个算法,我介绍了之前做的一个应用:利用SVM对心室和心房的钙流波形图做分类,当时的正确率为80%左右。
又看了我本科参加过JAVA的比赛,获得了西北地区的一等奖,问了我collection和map下面有哪些继承类以及其之间的区别?
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Map<--SortedMap<--TreeMap
Map<--HashMap
最后是手写代码:1、给定一个矩阵,以及两个坐标P(i,j)和Q(m,n),分别为子矩阵的左上角和右下角的坐标,在O(1)时间复杂度下,求子矩阵各个元素之和?我想了好久想了几个方法时间复杂度都不是O(1),最后面试官微笑着说,么事,回去再想想。
又问了一个问题,不是写代码:有一亿个数,要求它们的均值和方差,随机取样取多少比较好?
接下来又来了一个面试官:这个面试官没有刚才的面试官那么和蔼,好像还有急事的样子。首先让我介绍了一下利用聚类对航空用户价值分析的项目。然后让我说一下K-means聚类算法,又问了还了解哪些聚类算法,我说了分层聚类,谱聚类,又分别详细的介绍了一下。问了我熟悉哪些语言,(这是套路,接下来一定是要让你用你最熟悉的语言开始手写代码了)。给定一个已经排好序的数组,分成两块,然后将两块交换位置,给定一个数,判断是否在数组里面,如果在返回下标。利用了快排的思想,又问了时间复杂度。接下来让我说一下JAVA/C/C++语言的区别,为什么?