赞
踩
今天约了一家做车载的Android高级岗电话面试,由于接近40个月没有面过试了,感觉还是有点生疏,回答的不是很好,所以在此做一个整理。面试题都不是很难,但是都很经典,可以很好地考察Android的基本功。
1.讲一讲匿名内部类。
当突然被问到这个问题还是没反应过来,匿名内部类很熟悉的名字,思绪回到了N多年前学习java基础的时候,但是到最后还是没回答上来。
首先回忆一下什么是内部类:
- public class A {
-
- private int a;
- public String name;
-
- //内部类
- public class B {
- public void printLog(){
- //内部类可以访问外部类的公有和私有属性
- Log.i("tag",name + "--" + a);
- }
- }
-
- }
很明显,内部类就是类里面的一个类,写法与创建一个外部类没有差别,内部类里面的方法可以访问外部类里面的所有属性。
- @Override
- protected void initListener() {
- rlLogin.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- }
- });
- }
Android中常用的的匿名内部类就是写点击事件的时候,可以理解为实现这个接口的类的对象,顺便实现接口里面的方法。匿名内部类的写法可以简单理解为实现这个接口的对象。
2.简历上看你用过NDK,你都用NDK做过什么?
NDK开发需要懂C/C++,我们经常会进行一些图形图像处理,我们知道图形图像处理的库大部分是基于C/C++的,因为C/C++有更高的效率,我使用NDK主要是进行一些图像处理,比如美颜等。
3.讲一讲哪些情况会导致内存溢出?
这个问题应该比较简单,下面就列出集中导致内存溢出的场景:
01.资源释放问题,比如Cursor,IO流,Context引用没有及时释放
02.对象内存过大,比如大图片
03.static关键字的使用问题
4.讲一讲除了图片以外的内存优化你都做过哪些?
01.及时的检查代码,看看Cursor,IO流,Context引用没有及时释放
02.应该尽量避免static成员变量引用资源过多的实例,比如context
5.说说你在项目中的UI框架是如何实现的?
自定义一个类继承自FrameLayout,在里面添加加载成功,加载错误,网络错误,没有数据等状态下的布局文件,控制显示或者隐藏。在Fragment的onCreateView方法中使用返回UI框架返回的各种类型的View。
6.讲一讲Glide的原理。
原理这个东西看你怎么讲,深一点就讲源码,但是源码这个东西你过段时间不看就忘了,导致面试的时候无从讲起,我就在想那不如把源码变成通俗易懂的大白话。
7.简单讲一下热修复原理。
比如说我现在用的是阿里的Sophix,下面以AndFix为例来讲讲热修复原理:
andFix是通过替换方法表中的方法实现热修复的,是native层的实现。AndFix做了什么呢?首先一个是差分包工具,这个可以理解为比较两个apk文件的异同,将有变化的方法加上注解(类名,方法名)。差分包被加载后,遍历里面的方法,找到被注解的方法,通过反射找到对应的方法名,在native层完成替换。
https://blog.csdn.net/qinbin2015/article/details/90442354
8.讲一讲OkHttp的核心原理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。