笔试部分
我是在笔试完后一天收到面试通知的,本来还以为不会过笔试的。因为笔试那天,我正好有个面试,面试完之后,急急忙忙跑到宣讲会那里,发现已经开始笔试了,好在那个时候Android开发工程师是在宣讲会现场笔试的,没有去其他地方,否则又得跑一趟了。
去到那里之后,现场工作人员发了个笔试题和一个个人信息表给我,然后找个位置坐下笔试了。笔试没记错的话,是5个选择题,3个简答题,一个行测题,3个编程题,最后两道是关于Android的和Java的。
1.选择题
选择题没有多大印象,只记得最后一道题是快速排序的,是关于时间复杂度的。
2.简答题
一道是关于线程和进程的关系,以及线程安全是什么。一道是哈希表的优缺点吧(没记错应该是这样)。最后一道应该是设计模式的。
3.行测题
行测题考的是有140个球,两个人轮流拿,一人拿一次,最少拿2个,最多拿7个。拿到第120个球的为胜利者。假如让你先拿,你第一次会拿几个?接下来要如何拿才能保证自己胜利。
4.编程题
编程题都不怎么难。
第一道是假如输入一个字符串"abcdef" 和一个整数k,假如k大于字符串的长度,则将整个字符串反转,假如K小于字符串长度,则以k个字符为小组进行反转。如"abcdef",当k = 2,则反转后为"badcfe",当k = 4,反转后为"dcbafe". 要求用C/C++/JAVA中的一种来写程序(不能用JAVA的类库)
第二道题是对一个数组A[n],将奇数放在左边,将偶数放在右边,要求时间复杂度为O(n)。
第三道题我因为迟到了一点,所以没时间做了。题目大概是这样的 给一个数,比如说15,要求写出能够有若干个连续的数的和等于15的数,比如说 1+2+3+4+5 = 4+5+6 = 7+8 = 15 。
5. 这道题是关于Android开发的,UI Thread 、Message Queue、Loops (还有个啥忘记了)之间的关系
6. 这道题是关于java垃圾回收的,我不会java,没记。
我做了选择题,简答题答了第一题,线程安全不知道,哈希表不知道,剩下设计模式也不会。然后写了行测题,编程做了前两个,第三个没时间做。最后两个,我没做过Android开发和java,空在那里。这样都过了笔试。
面试部分
笔试完第二天有个招聘会,我去了一下,中午回来后不久接到了电话,通知我在11点去公司面试。然后第三天早上下了好大雨,当时都有点犹豫要不要去,最后还是去了。9点半出发,去到那里10点半,在里面休息了一下,环境挺不错的。那里还有一些饼干,糖果。
休息10分钟后前台就叫我去面试。面试官给人感觉挺不错。一开始叫我自我介绍,他就拿着我的简历和笔试题看。我自我介绍完了之后,就问了一下我的项目,我没做过Android方面的项目,只做过PC端的,他也不怎么感兴趣,就随便聊了几句,然后就问试卷上的题,一开始就是问快速排序。我讲了一下快速排序的原理。然后他又问了一下时间复杂度,我当时没意料到我试卷上的那个题做错了,就照那天的那个选项说了,然后他又问了一句“什么”,估计是想我改一下吧,我还傻傻的重复了上面的答案。然后他就不问了。接着问线程安全,我只能说不知道。我都不是学计算机或软件方面的,好多这样的概念都没接触过,都不好怎么说。然后问哈希表,我依然尴尬地摇头,接着问设计模式,依然不懂。然后就问了下我用什么语言,问了下多态性。最后就问了下一个2*8的最有效的算法。我答的是用位移运算,左移三位就行。然后基本就差不多到这了,和我说如果有复试就会在3天内通知,如果没有通知基本就是被刷了。面试完之后就感觉应该没戏了。本来今天还有个招聘会的,都懒得去了,直接回去算了。