BAT Android面试20题详解
在Android开发领域,面试往往涉及核心技术和最佳实践。以下是对给定内容的详细解析: 1. **ListView优化**: - 为了实现流畅的ListView,关键在于减少布局层级,使用HierarchyViewer工具检查优化。 - convertView的复用是提高性能的关键,避免每次滚动时创建新视图。 - ViewHolder模式可以减少findViewById的开销,提高滚动效率。 - 图片异步加载,避免UI线程阻塞,例如使用Glide或Picasso库。 - 快速滑动时暂停图片加载,减少计算量。 - 图片压缩可降低内存占用,如使用LruCache或 Glide的内置压缩功能。 - 数据分页加载减少一次性加载的数据量,提升用户体验。 2. **Android安全问题**: - 避免误导出组件,如恶意启动其他应用的Activity。 - 加强参数校验,防止注入攻击。 - WebView的安全性需重视,避免JavaScript注入,启用Web内容安全策略。 - 使用混淆技术保护代码,防止二次打包。 - 关键信息加密存储,避免明文存储。 - 正确使用HTTPS以保证网络通信的安全。 - 避免使用不安全的加密方法,采用标准加密库如Android keystore系统。 - 限制权限使用,避免不必要的敏感权限暴露。 - 注意内存泄漏检测和修复,避免长时间占用系统资源。 3. **APK瘦身策略**: - 清理冗余和未使用的代码,避免引入不必要的依赖库。 - 使用Proguard混淆代码,优化并减小APK大小。 - 只针对常用架构(如armabi和x86)编译原生代码。 - 使用Lint工具查找未使用的资源并删除。 - 图片资源优化,如使用tinypng压缩,选择合适的格式(JPEG或PNG)。 - 对9-patch图片的拉伸区域进行精细化裁剪,减少大图使用。 - 按需提供不同分辨率的资源,优先保证xhdpi,其他分辨率补充关键差异。 - 重用图片资源,通过代码旋转实现对称图像。 - 减少大量图片的使用,如用代码绘制动画替代AnimationDrawable。 4. **加密方式**: - 对称加密(如DES)使用同一密钥进行加密和解密,简单快速但密钥管理困难。 - 非对称加密(如RSA)使用公钥加密,私钥解密,安全但计算量大,常用于密钥交换和数字签名。 SSH和SSL/TLS协议均使用非对称加密保证通信安全。 5. **屏幕旋转的处理**: - 若不指定`android:configChanges`,旋转会导致Activity重启,横竖屏各执行一次生命周期。 - 设为`android:configChanges="orientation"`,只执行一次onConfigurationChanged()。 - 设为`android:configChanges="orientation|keyboardHidden"`,不销毁Activity,仅执行onConfigurationChanged()。 6. **Service启动方式**: - `startService()`适用于长期后台任务,如音乐播放,即使调用者退出,Service仍然运行,直至调用stopService()。 - `bindService()`适合频繁交互,服务与调用者生命周期绑定,调用者退出Service随之结束。使用Binder接口进行通信,更灵活但复杂。 7. **Context的理解**: - Context是Android应用的基础组件,提供系统环境信息。 - Application Context全局唯一,适用于不需要依赖Activity状态的场景。 - Activity Context与特定Activity关联,用于启动新Activity或Dialog等。 - Service Context较少使用,一般在Service内部操作。 以上知识点涵盖了Android开发中界面优化、安全实践、应用瘦身、通信加密、屏幕适配、Service管理以及Context理解等多个方面,全面展示了Android开发者应具备的专业技能。
下载地址
用户评论