一、华为实习生面试(2017.4.22)
笔试:三道编程题,只做对了1.3道。进入面试。
一面:
(1)问了自己常用的语言,说了C++,然后问了关于C++面向对象的一些问题,如封装,继承,多态啊等等。
(2)关于从一个数据库解析xml文档,然后再存入一个数据库。这个系统怎么设计。本质上是一个生产者消费者问题,回答的一般。
(3)又聊了一些自己做过的课题,主要是深度学习,没啥好说的。
二面:
(1)对于华为公司的文化有什么了解。(奋斗者,通过努力改变自己的生活等等)。
(2)你觉得华为公司怎么样。
(3)家庭情况
(4)工作地点的选择,想要的职位。
4.25日收到短信,通知通过面试,但是依旧没有得到offer,跪。。。。
额。。。剧情反转了,5.16接到通知,获得华为实习offer。猜测应该是前面大佬有放弃的,现在备胎补上了,感谢华为!
二、新氦数据实习生面试(2017.5.12)
笔试:
题目覆盖较广,计算机基础知识都有涉及,但比较简单。
算法、数据结构、计算机网络、数据库、操作系统。
主要偏重算法与数据结构,期中一个考察哈夫曼树的构造过程,另一个是编码问题,关于C++还是要熟练,这样才看得懂代码细节。
最后两个编程题,我用的编程语言为:C++
第一个,写一个二叉树的层次遍历,主要用到队列,这个简单。
第二个,给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。主要用到递归的思想,当时没想出来,没有给出完善的解法。
这里贴出代码:
class Solution {
public:
/**
* @param candidates: A list of integers
* @param target:An integer
* @return: A list of lists of integers
*/
void countall(vector >& rt, vectortem, vector candidates, int tsum, int cur, int target)
{
if (tsum == target)
{
rt.push_back(tem);
return;
}
if(tsum>target)
return;
for(int i=cur;i > combinationSum(vector &candidates, int target) {
// write your code here
vector > rt;
if(candidates.size()==0)
return rt;
vector tem;
sort(candidates.begin(),candidates.end());
candidates.erase( unique( candidates.begin(), candidates.end() ), candidates.end() ); //删除掉candidate中的重复元素,因为重复元素会导致rt中有重复的解
countall(rt,tem,candidates,0,0,target);
return rt;
}
};
问题的一个变种,给出一组候选数字(C)和目标数字(T),找出C中所有的组合,使组合中数字的和为T。C中每个数字在每个组合中只能使用一次。
class Solution {
public:
/**
* @param num: Given the candidate numbers
* @param target: Given the target number
* @return: All the combinations that sum to target
*/
vector > combinationSum2(vector &num, int target) {
// write your code here
set > r;
vector cur;
sort(num.begin(),num.end());
combination(cur,num,0,0,target,r);
vector > ret;
copy(r.begin(),r.end(),back_inserter(ret));
return ret;
}
void combination(vector cur,vector &num,int index,int curSum,int target,set >&ret)
{
if(curSum>target)
return;
if(curSum==target)
{
ret.insert(cur);
return;
}
if(index==num.size())
return;
combination(cur,num,index+1,curSum,target,ret);
cur.push_back(num[index]);
combination(cur,num,index+1,curSum+num[index],target,ret);
}
};
技术面试:
(1)卷积神经网络,卷积的作用,为什么要卷积。(过拟合)
(2)牛顿法的优点和缺点。(凸函数,正定)
(3)梯度消失,怎么来避免。(batch normalization)
(4)上面贴出代码的那个编程题目。怎么解?
原理,原理。算法基础,机器学习基础,数学基础,知其然,也要知其所以然,真正看懂。
哎,人业余机器学习的都比我懂得多,看的深。。。ORZ。。
综合面试:
个人的基本情况,将来想做什么。
自己的优势是什么,自我评价。
为什么想做机器学习。
自然语言处理,怎么来做。。。
问问题:
1.贵公司想招聘到什么样的应届生。
2.贵公司未来对机器学习会怎么部署(因为自己想做机器学习的东西)。
over
总结:
1.注重基础,需要学的东西很多,基本算法一定要会,算法基础好才会有下文。
2.机器学习方面,自己在做的东西一定理解十分透彻,不能只知道个大概。
继续努力吧!
2017.5.12