蘑菇街Android开发内推一面
然而面试官问我是不是在深圳,天呐,我分明写的有学校等信息的好吗,结果。。他那边我的简历上的求职地点竟然是深圳...问我你知道蘑菇街在哪不,我说不是在杭州吗,然后解释了一下,简历是之前就写好的,推的时候前可能没有改过来。。当然面试官人很nice,说这不影响。
面试时长36min。
先问了我本来是学通信的为什么要做Android( 怪我咯:( )。。接下来就是问技术问题,竟然没让我做自我介绍。。以下是问题和我的回答,尽量以问题顺序呈现。
1.为什么用Git做代码托管,rebase用过没(rebase没用过),fetch命令和pull啥区别?这个竟然不知道(真后悔吧这个卸载简历上)
2.C++中的虚函数是怎么实现的?我讲了一下Java的虚函数,invkevirtual查找过程以及虚函数表优化
3.什么是多态?easy
4.Java反射怎么使用?讲到类加载的Class怎么调用类的所有属性和方法,Android里面通过反射调用私有api。
5.Android中的几种Context什么区别?这个问题我回答的不好,简单说了一下生命周期和Context的继承关系,以及注意事项弹对话框不能使用applicatuion的上下文
6.Android中的内存泄露遇到过没?我讲了Handler持有Activity泄露以及google建议的嵌套类、弱引用的解决方案、Drawable的setCallback,耗时的线程可能会持有Activity,Bitmap调用recycle,因为以前bitmap在native分配,所以要调用recycle释放,现在不用了因为在堆分配,由GC回收,他问我是几点几版本开始的,我说是3.0版本。
7.接着问我bitmap能否复用?这个我没弄懂意思,就回答不知道,最后查了一下,也是3.0以后的有个Option的inbitmap字段可以复用http://yhz61010.iteye.com/blog/1850232
8.平时遇到过OOM没?遇到过,主要是图片加载很常见,我讲了BitmapFactory的解析Options的in...bound参数先读取图片信息进行必要的缩放,还有缓存,讲了DiskLruCache、LruCache缓存策略,以及可以加入软引用,讲了底层的LinkedHashMap实现。
9.用过外观模式?(表示没听过)这是Android中的知识吗?面试官告诉我,是一种设计模式,我说,哦,没有,我知道的有单例模式、工厂模式、***模式、观察者模式、装饰者模式、迭代器模式。然后让我讲一下***模式,我就大概说了一下,然后说在Android中使用AIDL产生的的代码中当查不到本地的Binder时asInterface返回的就是一个***对象,然后面试官说,那就是你使用过bindService调用过Service了?恩。
10.FrameWork层看过那些源码?Java源码呢?讲了一下看过的框架层源码和java集合,没有具体讲。
11.自定义控件做过哪些,需要注意什么?处理wrap_content的情况,ondraw不能耗时,刷新率16ms等,然后让我讲了一下圆角矩形的图片控件怎么做,降到了画笔的xferm...方法进行图面交叠。
12.平时看不看技术文章?看,自己也经常写,简历上有博客地址,问我一般写什么文章,我说Android主要是研究Framework层源码的内容。然而。。。他的那个简历上并没有。。他又重新下载了一下pdf还是没有,我解释了一下应该是牛客网自动生成的简历,不是我自己写的那个简历。
// 补充一个,还问到我Android动态加载了解不?我没用过,但之前看到过通过DexClassLoader使用接口实现的一种插件形式,具体不太了解。
然后面试官说基本了解差不多了,那就这样吧?我说难道不需要我提几个问题吗?:)哈哈