今天上午到腾迅那里,没有叫到笔试通知,是去霸笔的。原本以为是可以霸笔的,因为像阿里,360等大公司都专门的考场给霸笔的人准备的,但是腾迅不是这样,只有两个很小教室给那些霸笔的人考试,一会就都占满了,太少了,还有一大批没收到通知人不让考试。参加腾迅笔试的也够火爆的,一条走廊全占满了人,都是霸笔的,等了半小时者不让进,太不厚道了。
下午到百度的笔试,比腾迅大气多了,给那些霸笔的人提供了3个大教室,每个教室能容纳100多人,而且有专门的人安排座位。百度的职位真多啊,有一二十个,我选择的是B13深度学习算法研发工程师,一个教室还就我一个人选这个职位。试卷一发下来,我愣了,真难度也太大了,好多我见都没见过……
现将题目贡献如下:
一、简答题
1.深度神经网络目前有哪些成功的应用?简述原因。(10分)
2.列举不同进程共享数据的方式(至少三种)。(10分)
3.对于N个样本,每个样本为D维向量,采用欧式距离使用KMN做类预测。(10分)
1).给出预测时间复杂度。
2).当N很大时,有哪些方法可以降低复杂度?
3).k取值的大小对预测方差和偏差有何影响?
二、算法和程序设计
1.给出一个数据A=[a_0, a_1, a-2, ... a_n](其中n可变),打印出该数值元素的所有组合。(15分)
2.有这样一个数组A,大小为n,相邻元素差的绝对值都是1,如A={4,5,6,5,6,7,8,9,10,9}。现在给定数组A和目标整数t,请找到t在数组中的位置。(15分)
3.在平面上有一组间距为d的平行线,将一根长度为l(l<d)的针任意掷在这个平面上,求此针与平行线中任意一根相交的概率,用高等数学(微积分、概率的方法)求解,基于布丰投针的结论,任选一种编程语言(C/C++, matlab, python, java),写出模拟投针实验(程序中允许把一个理想的Pi作为常量使用),求解圆周率。(15分)
三、系统设计题(两题中任选一题作答,25分)
2.关于K-means聚类算法,请回答以下问题:
1).写出将N个样本X=(x1, ... xN)聚类成k类的k_means聚类算法的优化目标;
2).描述K-means终止的常用条件;
3).以Kmeans算法为例,描述Expectation-Maximization(EM)算法的基本原理与步骤。
4).用伪代码给出基于MPI或者HADOOP的Kmeans并行算法。
我的部分解答:
二、(2)
public static int find(int[] a, int t) { int i=0; while(i<a.length) { if(t == a[i]) { return i; } else { i += Math.abs(t - a[i]); } } return -1; } public static void main(String[] args) { int[] a = {4,5,6,5,6,7,8,9,10,9}; System.out.println(find(a, 7)); }