- 博客(35)
- 收藏
- 关注
原创 剑指Offer —— 面试题(十六)
Android中Service和Activity通信的两种方式,HTTP和HTTPS的区别,线程与进程的区别,几种常见的调度算法,七层网络模型。
2022-07-23 15:06:15
194
1
原创 剑指Offer —— 面试题(十五)
假设屏幕内可以显示10个ViewHolder(2行5列),所以一开始会创建10个ViewHolder用于显示,创建5个ViewHolder放入缓存池中,在上滑时会将滑入屏幕上方的ViewHolder首先放入二级缓存中,由于默认大小为2,所以多余的3个ViewHolder会被回收到四级回收中,此时一级缓存中有10个ViewHolder,二级缓存中有2个ViewHolder,四级缓存中有3个ViewHolder。只要根据前后布局的变化,就可以得出应该执行什么动画。因为RecyclerView要执行预测动画。..
2022-07-21 15:15:22
736
原创 剑指Offer —— 面试题(十四)
由于Handler消息的延时发送持有Handler对象,内部类持有外部类导致内存泄漏,所以我们可以将Handler定义成静态的内部类,在内部持有Activity的弱引用,并在Acitivity的onDestroy()中调用handler.removeCallbacksAndMessages(null)及时移除所有消息。存储消息的顺序时按照时间先后顺序来存储的,它是先进先出的,只是这里的先依据的不是谁先入队,而是消息待发送的时间。.........
2022-07-19 22:27:44
578
1
原创 剑指Offer —— 面试题(十三)
Service默认运行在主线程(UI线程),所以Service不可以执行耗时操作,如果需要执行耗时操作,需要创建子线程,在子线程中执行耗时操作,否则会出现主线程被阻塞(ANR)的情况。
2022-07-18 21:00:00
86
原创 剑指Offer —— 面试题(十二)
Activity是Android组件中最基本也是最为常见用的四大组件之一,在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。Service是Android中实现程序后台运行的解决方案,它比较适合去执行那些不需要和用户交互而且需要长期运行的任务。...
2022-07-17 23:30:00
486
原创 剑指Offer —— 面试题(十一)
如果在Activity中使用了Handler,Handler在执行sendMessageDelayed方法时,在延时期间关闭Activity,便会导致内存泄漏。因为Message对象的target属性持有Handler对象,由于内部类持有外部类,导致Activity会被Handler持有,最终Activity导致泄漏。隐式调用是根据匹配,找到对应的Activity跳转。Activity主要有两种启动方式,分别是显示调用和隐式调用。显示调用是直接通过指定类名进行跳转。...
2022-07-16 21:00:00
51
原创 剑指Offer —— 面试题(十)
当CPU写数据时,如果该变量是共享数据,给其他CPU发送信号,使得其他的CPU中的该变量的缓存行无效,当其他变量需要读取该变量的值时,则会从系统内存中读取,而不是从L1缓存中读取。普通的队列是一种先进先出的数据结构,元素在队尾入,队头出。在优先队列中,元素被赋予优先级,具有最高优先级的元素先出。ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。随遇而安仅是一种生活态度,坚持不懈才是该有的人生方式。...
2022-07-15 21:00:00
106
原创 剑指Offer —— 面试题(九)
Java中一种不确定的数据类型,本质是参数化类型。由于集合中可以存储各种类型的对象,但是使用时往往需要进行类型转换,非常不方便。合理的使用泛型提供了编译时的类型安全,确保能把正确类型的对象放入集合中。有两种限定通配符,一种是表示了非限定通配符,因为可以用任意类型来替代。...
2022-07-14 22:00:57
80
原创 剑指Offer —— 面试题(八)
注解仅仅是元数据,本身不包括任何的业务逻辑,一个注解对应着一个消费者,在合适的时机翻译注解对应的逻辑,一般是结合反射技术实现。自定义注解定义为@interface,继承java.lang.Annotation接口。...
2022-07-13 21:00:00
137
原创 剑指Offer —— 面试题(七)
线程池是一种多线程处理方法,帮我们管理线程。使用线程池的好处是减少在创建和销毁线程上所花费的时间以及系统资源的开销,解决资源不足的问题。线程池的种类:newCachedThreadPool:只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程来处理任务。优点:任何任务都会被立即执行,比较适合执行大量的耗时较少的任务。newFixedThreadPool:只有核心线程,并且数量固定的。线程池空闲时不会释放工作线程,还会占用一定的系统资源。优点:更快的响应外界请求。newS
2022-07-12 22:05:48
111
原创 剑指Offer —— 面试题(六)
编译器(javac)将Java源文件(*.java)编译成字节码文件( *.class),可以做到一次编译到处运行,windows上编译好的class文件,可以直接再linux上运行,通过这种方式做到跨平台,Java的跨平台有一个前提条件,就是不同的操作系统上安装的JDK或JRE是不一样的,虽然字节码是通用的,但是需要把字节码解释成各个操作系统的机器码是需要不同的解释器的,所以针对各个操作系统需要由各自的JDK和JRE。字节码的好处,一方面实现了跨平台,另一方面也提高了代码执行的性能,编译器可以做一些编译器
2022-07-11 21:00:00
148
1
原创 剑指Offer —— 面试题(五)
TCP协议是7层网络协议的传输层协议,负责数据的可靠传输。在建立TCP连接时,需要通过三次握手来建立,过程是:在断开TCP连接时,需要通过四次挥手来断开,过程是:零拷贝指的是,应用程序在需要把内核中的一块区域数据转移到另外一块内核区域时,不需要经过复制到用户空间,再转移到目标内核区域去,直接实现转移。应用程序直接调用TransferTo()命令,实现转移,不需要两次复制,提高了效率。...
2022-07-10 22:30:00
165
原创 剑指Offer —— 面试题(四)
线程分为用户线程和守护线程,用户线程就是普通线程,守护线程就是JVM的后台线程,比如垃圾回收线程就是一个守护线程,守护线程会在其他普通线程都停止运行后自动关闭,我们可以通过设置thread.setDaemon(true)来把一个线程设置成守护线程。线程安全指的是,我们写某段代码,在多个线程同时执行这段代码时,不会产生混乱,依然能够得到正确的结果。比如i++,i的初始值为0,那么两个线程来同时执行这行代码,如果线程是安全的,那么最终的结果应该是一个线程结果为1,一个线程结果为2,如果两个线程结果都为1,则表示
2022-07-09 21:00:00
92
原创 剑指Offer —— 面试题(三)
HashMap 就是以 Key-Value 的方式进行数据存储的一种数据结构。当链表的长度大于 8 的时候就会转换为红黑树,不过,在转换之前,会先去查看 table 数组的长度是否大于 64,如果数组的长度小于 64,那么 HashMap 会优先选择对数组进行扩容 resize,而不是把链表转换成红黑树。HashMap的默认数组长度为16,扩容系数为0.75,也就是说使用大小占总大小的75%时,会自动进行扩容,将大小扩容到原来的两倍,并重新计算各项数据的hash值。垃圾回收机制,是一种回收内存空间避免内存
2022-07-08 21:00:00
107
原创 剑指Offer —— 面试题(二)
深拷贝和浅拷贝指对象的拷贝,一个对象中存在两种类型的属性,一种是基本数据类型,一种是实例对象的引用。造成死锁的原因:如果想要避免死锁,只需要不满足其中某一个条件即可,前三个条件是作为锁要符合的条件,所以避免死锁就需要打破第4个条件,不出现循环等待锁的条件。JDK自带的三个类加载器:Bootstrap ClassLoader、ExtClassLoader、AppClassLoader备战秋招的第二天!!...
2022-07-07 16:39:23
81
原创 Android —— Activity的Flags
Activity的Flags有很多,本文主要介绍一些比较常用的标记位。标记为的作用有很多,有的标记位可以指定Activity的启动模式,比如 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_SINGLE_TOP 等;还有的标记位可以影响Activity的运行状态,比如 FLAG_ACTIVITY_CLEAR_TOP 和 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 等。下面,我将为大家介绍Activity常用的Flags。FLAG_ACTIVITY
2022-04-25 20:36:25
1696
原创 Android —— Activity的四种启动模式
除了Activity的生命周期外,Activity的启动模式也是一个难点,有时候为了满足项目的特殊需求,就必须使用Activity的启动模式。在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们放入任务栈中,但是有些场景重复创建多个实例,是没有必要且浪费资源的,这就需要启动模式来修改系统的默认行为。下面,我将以理论+实践的形式为大家介绍Activity的启动模式。 standard标准模式singleTop栈顶复用模式singleTask栈内复用模式singleInst
2022-04-21 19:38:47
2609
1
原创 Android —— Activity的生命周期
Activity是Android的四大组件之一,是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android的APP中,只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。因此只有了解了Activity的生命周期,才能更好的使用Activity。以下内容为模拟场景,通过日志打印输出各个方法的执行顺序,并在七个生命周期所对
2022-04-20 20:19:38
2396
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人