最近,终于忙完了学校里的事,然后准备开始找实习,现在实习也找到了,那就说说我找工作的点点滴滴吧,希望对于初次来北京的小白可能会有些帮助吧
坐火车来的时候就感受到好多人来北京,我也第一次买了站票(虽然我也是提前一个星期买的票),在火车上和来北京的老乡聊天,他们告诉我要做好碰壁的准备,因为北京竞争挺大的,当我跟他们说我投的简历有些职位是合适的,却莫名奇妙的被标记为不合适,他们说是因为投的人太多了,一般投10份简历会有一个面试机会,我投了二十个简历有4个面试机会已经不错了,唉,原来是这样
生平第一次来北京,正好同学在北京实习,顺便接我一下,但是我只有3,4天的时间去找工作(当然这几天我主要用来面试的,以前早已投了简历,和公司已经约了面试),那几天一般都是在外面跑着面试,在加上北京上班晚,一般中午都不能按时吃饭,但是还好有百度地图,找起来也方便些。
第一天 天一星辰
九点我准时到的,前台让我又重新填写了一份简历,后来又等了一段时间,大约十点左右吧,给了我一份试题让我做,其中涉及前端,加密算法,数据结构,linux操作,php,c语言,我肯定是不全会的,不过没办法,只能硬着头皮去做,哪怕只有一点思路,尤其对于数据结构,不管怎么说考研就考的数据结构,对于算法的思想还是明白的,但是用c写,早有些忘了,有些甚至是用汉字写的,linux的题更是不会,前端的题还算简单吧。
做完以后,人事把我带到面试的房间,扫了一眼办公环境,就是那种普通的格子间,还算可以,正好里面也坐着一个等面试的男生,跟他聊天才知道,他面试的java,我一看他手里拿着的试题,跟我的一样,心想,这怎么能一样呢,不同的岗位啊,我一看那个男生做的,还没我写的多呢,最起码我还死马当作活马医呢,他连医都没医,这个男生有一年的工作经验,比我这小白总该强些吧,其中有一个算法题是这样的
i=1;
while(i<n)
{
i=i*2;
}
求这段代码的时间复杂度
这个的复杂度应该是O(logn)
因为和那个男生讨论了这个题所以对这个题印象深刻
结果一会人事说到饭点了,下午面试,我也就只能随便吃了点,下午一点面试开始
面试官30多岁,微胖,看着很友善,问了一些简历上的问题,比如一周有多长时间实习呀,老师让不让出来实习呀,说一说简历上写的项目经历呀,以前在看别人写面试经历的时候说不要别人问一句你答一句,要有问有答,我对这一点还是比较注意的,我问他为什么不同的职位做一套题?他说:“基础的都是一样的”,另外他还问了一些试卷上的题
比如写出一个算法用前序遍历遍历一棵二叉树
思路分析:定义一个节点的结构体,其中包括它的值,它的左右节点的指针,然后利用递归去完成遍历
struct BTreeNode{
int data;
Node* left;
Node*right;
};
void printBTree(struct BTreeNode *bt)
{
if(bt != NULL){
printf("%c", bt->data);
}
if(bt->left != NULL )
{
printBTree(bt->left);
}
if(bt->right != NULL)
{
printBTree(bt->right);
}
return;
}
2.对于一个有序数组查找其中的一个元素的位置,不能直接调用函数
我想到的是用折半查找,按着大概写出来,却忽略了索引的变动,应该是错了,整理时发现必须把查找的起始位置作为参数,应该是下面的样子了
function halfSearch(arr,num,low,high)
{
if(low<=high)
{
// js中/会得到小数 例如9/2=4.5
var mid=(low+high)/2;
var mid=parseInt(mid);
if(arr[mid]==num)
{
alert(mid) ;
}else if(arr[mid]>num)
{
halfSearch(arr,num,low,mid-1);
}
else
{
halfSearch(arr,num,mid+1,high);
}
}
return -1;
}
3.银川有多少加油站?
其实这个问题我在程序员面试攻略这本书上见过,当时只是一扫没在意,只是及得要考虑很多客观因素,例如,银川的面积,银川的人口,平均几个人有一辆车,等等,因为考虑到的因素太多,所以没做出来,我觉得这种问题就是看一个人的思考方式吧,觉得有点刁难
4.有9个球一模一样,其中有一个和其他八个的质量不一样,给你一个天平,天平一次可以称1个或者几个,最差几次能测出?
这个题当时忽略了球的轻重的重要条件,导致最后是五次,想来想去觉得应该是这样的
将9个球分三组,标号为1组,2组,3组,1,2组比较最差是不相等,则2,3,比较,如果不等,则2组有问题,并且已经知道那个球是轻还是重,将2组中的三个球再次划分为1,2,3,称一次即可找出那个质量不一样的球,则最差3次找到(如果大家有好的方法,一起交流哈),最好2次找到
5. 有17个球,两个人来拿,每次可以拿一个或者两个,谁拿到最后一个球谁获胜
这个题当时做的蒙蒙的,后来想了想应该是这样,当有3个球的时候(这是规律的最小值),后拿的人肯定会赢,17/3=5 余2,则我先拿2个,剩下的我保持别人拿1个,我拿2个,别人拿1个,我拿2个,保证每一轮都拿走3个,那剩下的肯定也是3个,从而保证最后能赢
6.扑克牌游戏; 两个人玩扑克,每人抽取三张,已知 A 的牌是 4,5,x B是6,7,y,求A胜B的概率是?(小王,大王分别用14,15代替) 用程序实现(略)
7求100以内的素数
想必这个问题在我们刚开始接触C语言的时候就是常做的题
function prime()
{
console.time("计时器");
var arr = [];
for (var i = 1; i <= 100; i++) {
var flag = 1;
for (var j = 2; j <= Math.sqrt(i); j++) {//取平方可是增加运行速度
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
arr.push(i);
}
}
document.write(arr);
console.timeEnd("计时器");
}