2015年7月的深圳,炎热,有一个周末正在和同事聚餐,接到了Hans的跨洋电话要我帮他做一道Android面试题。Hans是西安人,粗犷风趣又有些较真,我2013年底来深圳第一个识认的同事就是Hans,正好他那租的房子有一间要空出来,于是我们便成了同事加室友。Hans用了很多时间学习英语,包括上班时间,所以我们一直很佩服他的“不要脸”。历经七次雅思考试之后终于如愿出国,现今在新西兰找了前端开发的工作,超低介买了二手宝马跑车,正在办理移民,关于他的种种便又被传为了佳话。
你在路上时常常会被别人当成笑话,但当你到达目的地时就会变成神话。
面试题:做一个完整的项目,提交到github。
老外的这首题并不难,简单说就是从网络上下载JSON数据,然后解析到ListView上展示出来。具体的要求如下:
但这样的题,其实又很难,因为面试官可以很容易地看出你对需求理解,对细节的把握。大家可以关注一下Guidelines部份,老外比较在意面试者是否会真正的使用Git,希望能频繁地提交Git,并有相应的提交说明。从这点来说,老外比较注重开发人员的团队协作能力的。
正因为Hans大部份时间都用在英语和抄贵金属上了,Android开发有些手生,我也就帮他把这个题做了。之前也有遇到的外国公司的面试,发现他们都比较注重实际的动手能力。一般都会让你做一个项目,或者在网络协同白板上写一些代码给他们看。
当时MVP这种模式(风格)比较流行,虽然这题很简单,但是我还是用了MVP模式去现实一个整体的框架,网络部份用retrofit,并结合rxjava进行异步处理。算是一种比较流行的搭配了,咱在外国人面前不能档次太低了,不是吗?
这个Demo工程我上传到Github了,建议大家先用自己的方式动手写一下再上传Github。
注意:试题中的下载JSON的网址 “https://dl.dropboxusercontent.com/u/746330/facts.json” 貌似在国内打不开,我使用VPN是正常的。我下载了一份放在这个工程的根目:facts.json,无法访问网络的可以自己从文件加载。
小结
有一次在成都的一个创业咖啡吧里参加一个软件沙龙活动,聊到如何辨认一个开发人员的真实水平。一个刚分享完6个月不拿工资与公司共度难关最后盆满钵满的哥们意气风发地说,我会让他上真机写代码!
不过我并不太认同这种做法来判断一个人的真实水平,但它可以做为一定考量,如可以明显的看出面试者对工具的熟练程度,是否遵守代码规范等。但是真机题的水平并不代表面试者就能合适以后的开发工作,正如一个后来参与我们讨论的阿里项目经理所说的观点一样,在面试时不一定非要看对方的技术能力,对方的理解力和解决问题的思路也很重要,而对理解力这方面的问题其实可以通过简单的交谈技巧来得到答案。
Even 原创
简书链接:http://www.jianshu.com/users/f9fbc7a39b36/latest_articles
转载请注明出处。