Android面试精讲:跨进程通信、线程与线程池、JNI与网络协议

需积分: 0 0 下载量 71 浏览量 更新于2024-06-23 收藏 76KB DOCX 举报
"Android 35 道面试题及答案" 在Android开发中,面试时常常会遇到关于技术原理和实践经验的问题。以下是部分关键知识点的详细解析: 1. **跨进程通信**: - **Intent**:Intent是Android中用于启动活动、服务或广播接收器的主要手段,可以携带数据进行进程间通信。 - **ContentProvider**:ContentProvider是Android四大组件之一,用于在不同应用之间共享数据,支持SQL语句操作。 - **Broadcast**:BroadcastReceiver允许发送广播消息到所有注册接收器,即使是不同进程的。 - **AIDL(Android Interface Definition Language)**:用于创建进程间通信的接口,使进程间能通过接口调用对方的方法。 2. **线程操作**: - **wait()和sleep()**:wait()是Object类的方法,释放对象锁,使线程进入等待状态,需其他线程调用notify()或notifyAll()唤醒;而sleep()是Thread类的方法,使线程暂时停止执行,指定时间后自动恢复。 3. **字符串操作**: - **String、StringBuffer和StringBuilder**:String是不可变对象,修改时会创建新对象;StringBuffer线程安全,适合多线程环境下的字符串拼接;StringBuilder非线程安全,性能优于StringBuffer,适用于单线程环境。 4. **UI组件**: - **View与SurfaceView**:View是在主线程中刷新UI,适合不频繁更新的情况;SurfaceView拥有独立的绘图线程,适合高性能的图形渲染,如游戏。 5. **绘制流程**: - **View的绘制**:包括measure(测量大小)、layout(布局定位)和draw(绘制内容)三个步骤。 6. **JNI(Java Native Interface)**: - JNI是Java与本地C/C++代码交互的接口,允许Java调用C/C++库,提升性能和安全性,特别适用于系统底层功能和敏感代码。 7. **网络通信**: - **TCP**:面向连接的协议,通过三次握手建立连接,四次挥手断开连接,保证数据的可靠传输。 - **UDP**:无连接协议,不保证数据的顺序和可靠性,但具有更高的传输效率。 - **Socket**:提供客户端-服务器模型的网络通信,可以实现实时连接,如文件传输和即时通讯。 8. **音视频处理**: - **录制**:Camera类用于摄像头录像,MediaProjection用于屏幕录像。 - **编码**:MediaRecorder用于音频和视频的录制和编码,MediaCodec则提供了低级别的音频和视频解码/编码功能。 - **预览**:SurfaceView、GLSurfaceView和TextureView用于视频预览,VideoView则是一个封装好的视频播放控件。 9. **进程与线程**: - **进程**:是操作系统分配资源的基本单位,每个程序运行时都会产生一个进程,包含多个线程。 - **线程**:是程序执行的最小单位,一个进程可以有多个并发执行的线程,共享进程资源,提高执行效率。 这些知识点涵盖了Android开发中的核心概念和技术,对于理解和解答面试问题至关重要。理解并熟练掌握这些内容将有助于在面试中展现出深厚的技术功底。