·静态布局、事件派发、视图刷新(属性动画)
x4 你熟练掌握的导航方式都有哪些?·两种不同方式的侧滑菜单(SlidingMenu、DrawerLayout、NavigationView);·ViewPager + Fragment + 标签切换;·标签切换可以是RadioGroup/RadioButton,可以是TabLayout,可以是HorizontalScrollView嵌套线性布局,等等;·ActionBar/Toolbar搭配选项菜单(OptionsMenu);·其它;x7 说说你都用过哪些第三方框架?为什么要使用第三方框架?·框架的优势包括:强大、便捷、健壮;·强大即框架有丰富的拓展功能;·便捷即调用简单;·健壮指考虑周全、例如线程管理、缓存管理、异常处理等等;x8 网络通信框架的好处是什么?·便捷:调用起来比HttpUrlConnectiony要容易;·强大:get、post、上传、下载、通知回调等等;·健壮:线程管理、缓存管理、异常处理等;xA 图片加载框架究竟选用哪一款,你是如何取舍的?·综合考虑效果和易用性;·例如要求使用动画效果,优选Glide或Fresco;·侧重效率,则Glide优于Picasso,侧重效果,则PiCSSo略优;·侧重易用性,可能就不会选择Fresco;·等等;xB 使用图片加载框架的好处有哪些?·便捷:往往一两行代码就实现了图片的加载;·强大:丰富的配置如占位图、风格化显示、加工裁剪、动画效果等;·健壮:线程管理、缓存管理、异常处理等;xC 事件总线的好处是什么?·进程内的无障碍轻松通信:跨线程、跨组件;·事件类型可以是任意Object;·支持延时处理;xD 像黄油刀这类注解式框架,在混淆时要注意什么?·保留注解类;·保留注解类作用对象的名称,否则运行时找不到;xE ORM数据库框架的好处是什么?·直接将实体类映射为数据表;·直接以对象的方式操作增删改查,无需写SQL语句;xF 你有没有接触过蓝牙开发?其连接和通信的原理是什么?跟Socket有何异同?·配置权限;·搜索设备:【找到设备】和【搜索结束】都是以系统广播的形式接收和处理的;·准备连接:找到设备时,广播Intent会携带有设备的信息,包括其地址和名称等,记录下来;·连接设备:又称配对,通过远程设备的地址(类似ip),和约定的UUID(类似端口)进行连接;·连接设备使用的API类为BluetoothSocket/BluetoothServerSocket;·互传信息:一旦与远程BluetoothSocket连接建立后,就能够从中获取输入输出流,实现通信;------------------------------·相同点:基于IP和端口(仅仅只是类比),基于长连接,从连接中获取流实现数据传递;·不同点:设备不同,协议不同(Socket基于TCP/IP),也没有父子类关系,编码思路相似而已;xH 你都集成过哪些第三方的服务?·极光推送、ShareSDK分享、支付宝、百度地图、Bmob后端云;xI 对称加密和非对称加密的原理分别是什么?·对称加密:加密和解密的秘钥相同;·非对称加密:加密和解密的秘钥不同,公钥加密,私钥解密;·非对称的原理是:两个大素数的乘积很难被因式分解;xJ 你在集成百度地图的时候遇到过哪些坑?·在配置AppKey时,要明白AppKey是由包名和签名共同决定的;·因此该AppKey当且仅当【工程的包名和签名文件】都与申请时所使用的一致时,才是有效的;xK 混淆的目的是什么?·使你的代码难以被反编译;xL 为什么要给APK签名?·签名和包名功能决定应用的唯一身份;·在应用升级时,只有签名和包名都相同时,高版本才能覆盖低版本,否则会报签名冲突;·签名文件相当于开发者的身份证(因为有唯一的消息摘要/指纹),因此要妥善保管;xM 你有在github上发布过代码吗?该代码有何亮点?·开放式问题,预则立,请有所准备;xN WebView中java和JS如何实现互调?·Java调JS:通过webView.loadUrl("Javascript:methodName()")的方式,前提是承载这一JS方法的页面已经加载好;·JS调Java:通过window.javaObject.showToast()方式调用;·javaObject为Java代码中声明的实例;·该实例有公共的showToast()方法可供调用;·showToast()方法有@JavaScriptInterface注解;xO NDK开发中JAVA和C是如何实现互调的?其原理是什么?·Java调C:声明native方法,在C代码文件中对native方法做具体实现;·C代码中方法的名称须遵从Java_包名_类名_方法名的规范;·C回调Java:通过JNIEnv指针变量,以反射的方式获取到要调用的Java类名和方法名,动态该类的实例并调用方法;·如果要回调的Java类正好是C方法的主调类,则无须创建Java类实例,直接以jinnstance参数作为回调实例即可;xP 一个带有so库的APK容易反编译并调用so中的方法吗?·理论上是可以的,因为Java代码中的JNI类和方法声明是不能混淆的;·那么我们可以通过new这个JNI类的对象来调用其中的方法;xQ Retrofit的好处是什么?·将所有网络通信接口统一管理在一起,分层清晰;·以注解的方式区分GET,POST,上传和下载;·以注解的方式实现地址和参数的注入,代码的可读性和可维护性都得以提升;·配合ConverterFactory可以将返回结果轻松转化为实体类;·配合RxJavaCallAdapterFactory可以直接返回Observalbe对象,引爆响应式编程;xR 你有用过RxJava吗?响应式编程有何好处?·链式编程,代码简洁易读;·顺序逻辑:在一条响应链中,执行顺序是完全从上到下的,比之无边无际的回调(callback hell),要更好读好理解;·丰富的操作符:可以将原始事件进行近乎任意的转化;·便捷的异常处理:有订阅者的onError方法统一处理所有异常,代码得到极大简化;·便捷的线程调度:使用线程调度器可以方便地在线程间来回切换,避免了无尽的handler传递,代码得到极大简化;·调用链的注销:可以在任意时间终止一整条正在执行中的响应链;xS 说说你对MVP设计模式的理解;它与MVC模式有何异同?·数据Model,视图View,调度器PResenter;·传统的MVC模式中,Activity职责重合,即同时扮演V和C的角色,代码很混乱、耦合、难以管理;·MVP模式是将M和V彻底分层,Activity专注扮演View的角色,而将调度整合的工作交由Presenter;·Presenter在执行调度整合之前,须预先获取M和V的实例;·Presenter的创建和初始化工作仍由Activity来做;------------------------------·如果实际界面存在于Fragment中,则Fragment充当View;·此时Activity负责装配Fragment和初始化Presenter;
新闻热点
疑难解答