面试
闲暇部落
OpenGL、音视频、Linux、Android、Studio、Kotlin,Java,Git,Unity,面试
展开
-
Stringbuffer 和 Stringbuilder 的区别是什么?
请注意,尽管StringBuffer和StringBuilder都提供了可变字符串的功能,但它们的线程安全性和性能特性使得它们在不同的使用场景中有不同的适用性。此外,从 Java 5 开始,还有一个名为 StringJoiner 的类,它提供了一种更高效的方式来拼接字符串,特别是在拼接大量字符串时。StringBuffer 和 StringBuilder 是 Java 中用于处理字符串的两种常用类,它们都允许我们修改字符串,即进行字符串的拼接、插入和删除等操作。// 输出: Hello, World!原创 2024-03-06 18:43:06 · 403 阅读 · 0 评论 -
Activity、Intent、Servise 之间有什么关系?
例如,当从一个Activity跳转到另一个Activity,或从一个Activity启动一个Service时,都需要使用Intent来表明跳转或启动的意图,并传递相关参数。总结来说,Activity、Intent和Service之间的关系主要体现在:Activity通过Intent启动或与其他Activity、Service交互,而Service则是通过Intent在后台执行特定的任务。Intent在Activity和Service之间起到了桥梁的作用,负责传递启动或交互的意图及相关数据。原创 2024-03-06 13:05:14 · 548 阅读 · 0 评论 -
Android 中为什么主线程不会因为 Looper.loop() 里的死循环卡死?
当主线程在处理一个事件或消息时,如果它花费了太多的时间(即超过了预定的时间片),操作系统会中断它并将 CPU 资源分配给其他线程。在 Android 中,主线程(通常被称为 UI 线程或事件分发线程)通过 Looper.loop() 方法进入一个无限循环,这个循环负责处理各种事件,如按钮点击、触摸事件、绘制请求等。只有当新的事件或消息到来时,它才会被唤醒并继续处理。综上所述,尽管 Looper.loop() 是一个死循环,但由于事件分发、消息处理、线程调度和非阻塞操作等机制,主线程并不会因此卡死。原创 2024-03-06 12:58:30 · 846 阅读 · 0 评论 -
Android 中导致 OOM 出现的原因有哪些?
为了避免 OOM 异常的发生,开发者在编程时需要注意优化图片加载、及时关闭数据库 Cursor、正确释放资源,并避免内存泄漏等问题。操作数据库时 Cursor 未关闭:如果在使用 Cursor 查询数据库后忘记关闭,可能会导致内存泄漏,进而引发 OOM 异常。内存泄漏:内存泄漏是指程序在申请内存后,无法释放已不再使用的内存空间,导致可用内存空间逐渐减少,最终引发 OOM 异常。加载大图片或数量过多的图片:因为图片会占用大量的内存,如果不进行适当的优化或处理,很容易导致 OOM 异常。原创 2024-03-06 05:54:48 · 599 阅读 · 0 评论 -
视频编码之I帧、P帧、B帧
1、视频传输原理 视频是利⽤⼈眼视觉暂留的原理,通过播放⼀系列的图⽚,使⼈眼产⽣运动的感觉。单纯传输视频画⾯,视频量⾮常⼤,对现有的⽹络和存储来说是不可接受的。为了能够使视频便于传输和存储,⼈们发现视频有⼤量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就⼤⼤减少了视频数据的⽂件,因此有了H.264视频压缩标准。 在H.264压缩标准中I帧、P帧、B帧⽤于表⽰传输的视频画⾯。 2、I帧、P帧、B帧介绍 I帧⼜称帧内编码帧,是⼀种⾃带全部信息的...原创 2022-05-11 17:40:08 · 1786 阅读 · 0 评论 -
2020年Android面试题整理
1、Android开发使用过的设计模式书写单例模式代码。2、Service两种启动模式的区别生命周期区别;与Activity生命周期的关系。3、静态方法加锁和非静态方法加锁,访问区别。4、volatile作用5、Activity四种启动模式,出栈进栈机制。6、AIDL通信为什么需要把对象数据序列化?从一个进程传输对象到另一个进程,对象是否还为同一个对象?不是同一个对象,因为进程不共享内存,因此对象存储地址不共享,对象存储地址变了,所以对象不是一个对象。7、Servie中实现A.原创 2020-07-17 09:32:13 · 1208 阅读 · 0 评论