本文主要是介绍那些年被鄙视的面试(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android菜鸟一枚,自我感觉也是天资平平型。也不怎么能嘚瑟,迄今为止,除了遇到个别几个面试官面带微笑,总是锲而不舍的启发你,我能超常发挥一些,其余的,都以会啥说啥,不会直接说不怎么了解惨淡收场。尽管很多师兄啊,师姐啊,大牛啊,都谆谆教导我,不会千万不要说不会,瞎扯也要扯一点。哎,我觉得我是没救了。只好稍微勤快点儿撒,希望在以后的道路上能愈挫愈勇,在毕业的时候找到一份差不多的工作。
前几日去北京某研究所面试软件开发。不知道是我的理解力欠佳,还是他们的表达方式有些不对我胃口。冷场了好几次。呵呵。
面试我的是两个可能是博士生吧,一看就是学生。第一个问题还是,先做一下自我介绍。我就两句话概括了一下学校和专业,然后说其它基本的信息都在简历上,我之前练手做了什么blabla的几个简单的东西。PS:俺不是计算机出身,考研调剂到了软件工程,然后上了一年的理论课(真心的填鸭式,现在什么都不记得了),企业里面的老师带着学了一个月左右的Android,就这么出来……实习了,我也是醉了。然后他们扫了一眼我的简历(上面没什么出彩的地方,确实也没做多久),就开始问了:
1.你之前做的这些里面都用到了哪些知识?
我好挫,就说里面用到了什么Fragment啊,ListView的优化啊,呵呵。真是鄙视我自己。建议如果学的东西比较少的少的话,可以从条理清晰角度尝试,比如说:
(1) 界面的设计上,用到了哪些控件(大的说一说,小的就免了),是如何设计屏幕适配的,你了解到的屏幕适配知识就可以在这里结合你做过的小项目说一说。屏幕适配这个问题经常问到,可以准备下。
(2) 你是如何划分功能模块,每个功能模块各自是什么控制逻辑,如果他问到了具体实现,你再说一下就OK。
(3) 关于数据存储,即使你只用到了几个查询语句之类,你可以谈一谈安卓里面的数据存储知识,这样可以稍稍修饰一下你的开发经验不足。
2. 下拉刷新是如何实现的?
涉及到了线程,网络数据请求等知识点。
3.window系统和安卓系统有啥不一样?
那位大哥还好心的提示我说,安卓是基于Linux内核,可是大哥,我就是再弱,这个我也知道啊。问题是我对Linux不怎么了解。一时间真心的歇菜了。但是还是要简单的说一说的以后如果再遇到这个问题的话。
(1) 开源与否 Linux是开源的,Windows是不开源的。
(2) 软件支持性 Linux上很多软件的支持性不是很好,目前在改善中,哈哈。Windows在这方面好像比较通吃,大部分都是支持的。
(3) 操作性 Windows操作比较简单,图形界面做的很不错,对于没有计算机基础的人来说,能够很快明白该怎么操作。而Linux则复杂一些,一个非技术人员,操作起来比较吃力。
(4) 网络应用方面 Linux 在网络应用方面更加厉害。
(5) 安全性 linux和windows在设计上就存在哲学性的区别。windows操作系统倾向于将更多地功能集成到操作系统内部,并将程序与内核相结合;而Linux的内核空间与用户空间有明显界限,Linux比windows比更安全一些。
4. 程序退出来之后,如何接收一些推送消息?
推送原理:
推送原理:IOS的推送:就是Apple官方的APNS(ApplePushNotificationService) Android的推送:Google官方的是GCM(Google Cloud Messaging)。
两者的技术实现原理是类似的:即系统层有一个常驻的TCP长连接,一直保持着,即使手机休眠的时候也在保持。大家都会想,那这样会很耗电么?答案是不会。TCP连接有个心跳时间,在国外可以很长的时间,比如说30min,在国内则因为网络环境复杂一般为10min,客户端发起的心跳,会短暂的消耗手机电能,但在这个心跳间隔期间,则消耗电能是很少的。当心跳期间服务器端有推送消息发过来时,会先检测用户是否在线,如果在线就直接推送,如不在线,则暂时标记保存,等用户上线时先查离线消息再弹出。
自己也没实践过,所以只大概的了解下原理。
技术这条路,真是一路走到黑啊。有时候学着学着就感觉自己什么都不会了。哎,加油!
坚持,永远都是最好的品质。
这篇关于那些年被鄙视的面试(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!