作者: 我在等你回复可你没回 | 来源:发表于2019-04-11 12:37 被阅读0次

    https://blog.csdn.net/Roger_CoderLife/article/details/88311950

    集合题

    1.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
    不对。hashCode有可能冲突。

    2.抽象类必须要有抽象方法吗?
    不一定。

    1. Collection 和 Collections 有什么区别?
      Collection是集合类的上级接口,继承与他有关的接口主要有List和Set

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作

    4.如何决定使用 HashMap 还是 TreeMap?
    TreeMap是有顺序的。

    5.说一下 HashMap 的实现原理?
    HashMap是有数组和链表组成的。
    数组大小是2的n次方减1。根据key计算出它的hash,然后hash对数组大小取余,得到要放置的位置,然后放进去。然后数据该位置已经有值,就用头插法插进去。

    6.说一下 HashSet 的实现原理?
    就是将add的object,计算他的hash,放到指定的buck中,跟HashMap相比,只是没有value值。

    7.ArrayList 和 LinkedList 的区别是什么?
    ArrayList是动态数组,LinkedList是双向链表

    8.如何实现数组和 List 之间的转换?
    答:遍历数组,插入List。
    错了!!
    正确答案:
    List转数组:toArray(arraylist.size()方法
    数组转List:Arrays的asList(a)方法

    9.ArrayList 和 Vector 的区别是什么?
    答:是否加了同步控制

    10.Array 和 ArrayList 有何区别?
    答:Array数组长度是定的,ArrayList是动态数组。

    11.在 Queue 中 poll()和 remove()有什么区别?
    答:poll是同步阻塞的,remove是不阻塞的。
    错错错!!!
    poll()方法和remove()方法都是从队列中取出一个元素,但是poll()在获取失败的时候会返回空,remove()方法在获取数据失败的时候抛出异常

    12.哪些集合类是线程安全的?
    答:vector,hashtable,concurenceHashMap

    13.迭代器 Iterator 是什么?
    用来遍历的,包含hashnext,next等方法。

    14.Iterator 怎么使用?有什么特点?
    hashnext,next方法。特点。。。

    15.Iterator 和 ListIterator 有什么区别?
    ListIterator继承与Iterator,ListIterator只能用来编译list。
    错一半:
    总体来说ListIterator功能更强大,但是不通用。

    16.怎么确保一个集合不能被修改?
    加final关键字。
    错!!!!
    对集合使用Collections.unmodifiablexxx方法

    多线程题

    1.并行和并发有什么区别?
    没有区别吧,都是多线程的意思。
    大错特错!!
    并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

    并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。

    2.线程和进程的区别?
    进程内部可以多个线程,进程内部的线程数据同享。

    3.守护线程是什么?
    后台线程,用来监控另一个线程状态的。

    4.创建线程有哪几种方式?
    方式1:
    Thread thread = new Thread(new Runnable());
    thread.start();

    方式2;
    new Runnable().start
    错了!!!没有方式2!!!
    还有一种是写一个类继承与Thread,重写run方法

    5.说一下 runnable 和 callable 有什么区别?
    不清楚。
    零分!!
    callable可以获取子线程的返回信息!!

    6.线程有哪些状态?
    running,sleep,runable,waitting,stop
    错了!!没有sleep状态
    new ,runnable,running, block,dead 5种状态

    7.sleep() 和 wait() 有什么区别?
    sleep还持锁,wait就放弃锁。

    8.notify()和 notifyAll()有什么区别?
    notify是唤醒一个线程,可能导致死锁,notifyAll是唤醒所有线程。wait和nofity如何配合??
    写个死锁的例子!!
    https://blog.csdn.net/tayanxunhua/article/details/20998449

    9.同步的英文怎么写?
    synchronized

    10.线程的 run()和 start()有什么区别?
    run在主线程,start会新开一个线程

    11.创建线程池有哪几种方式?
    忘记API了。
    零分!!!
    有四种线程池:
    singleThreadPool:单一现场的线程池
    fixThreadPool :线程数量固定的线程池
    cacheThreadPool:线程数量可动态变化的线程池
    SchduleThreadPool:可以定时的线程池

    12.线程池都有哪些状态?
    空闲,开始,停止,满载
    错了!!!!
    Running、ShutDown、Stop、Tidying、Terminated

    13.线程池中 submit()和 execute()方法有什么区别?
    submit是提交认为,execute是启动线程池。
    错了!!!!
    submit有返回值

    14.在 java 程序中怎么保证多线程的运行安全?
    不知所云。

    15.多线程锁的升级原理是什么?
    偏向锁,轻量级锁,重量级锁,随着竞争的激烈会升级。

    16.什么是死锁?
    相互等锁,就是死锁。请手写一个死锁

    17.怎么防止死锁?
    不知所云

    18.ThreadLocal 是什么?有哪些使用场景?
    线程本地对象,每个线程都有一个备份,使用场景例如looper

    19.说一下 synchronized 底层实现原理?
    不知所云

    20.synchronized 和 volatile 的区别是什么?
    同步。volatile内存可见,防止指令重排序。

    21.synchronized 和 Lock 有什么区别?
    没什么区别。
    零分!!!!
    1.synchronized是内置关键字,lock是一个java类
    2.Lock必需是lock和unlock同时。
    3.Lock可以判断是否拿到锁,可以定时!!

    22.synchronized 和 ReentrantLock 区别是什么?
    可重入锁

    23.说一下 atomic 的原理?
    原子。说一下原理:主内存

    android模拟面试:
    https://blog.csdn.net/maiduoudo/article/details/79567242

    2.android view绘制机制和加载过程,请详细说下整个流程
    ViewRootImpl 执行performtraversal可以绘制,分别调用onLayout,OnMeasure,OnDraw进行绘制。
    OnMeasure会返回父View给他的尺寸,和度量方法。

    3.android四大组件的加载过程,请详细介绍下
    Activity一般是用startActivity传入intent启动,Service可以使用bindService,StartService启动,Broadcast通过sendbroadcast启动,Provider在应用启动过程启动

    6.Activity缓存方法
    onSaveInstanceState保存数据,onRestoreInstanceState恢复数据

    7.onDestory什么时候调用;Looper正在处理消息,在插入一条消息会怎样?

    7.Service的生命周期,两种启动方法,有什么区别
    oncreate,onStartCommand,onBind,onDestory
    有两种启动方式,startService,bindService两种方式。

    8.怎么保证service不被杀死
    提供优先级;修改service为persist

    9.静态的Broadcast 和动态的有什么区别
    静态在AndroidManifest,动态在代码registBroadcast中注册

    10.Intent可以传递哪些数据类型
    基本数据类型和parcel数据类型都可以

    11.Json有什么优劣势、解析的原理
    完全不知道

    12.一个语言的编译过程
    语法解释,解释成字节码

    13.动画有哪几类,各有什么特点
    属性动画 补间动画等

    【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

    答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。


    作者:青柚_
    来源:CSDN
    原文:https://blog.csdn.net/qq_38950316/article/details/81087809
    版权声明:本文为博主原创文章,转载请附上博文链接!

    【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
    答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。


    作者:青柚_
    来源:CSDN
    原文:https://blog.csdn.net/qq_38950316/article/details/81087809
    版权声明:本文为博主原创文章,转载请附上博文链接!

    【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?

    TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。


    作者:青柚_
    来源:CSDN
    原文:https://blog.csdn.net/qq_38950316/article/details/81087809
    版权声明:本文为博主原创文章,转载请附上博文链接!

    10.Intent可以传递哪些数据类型
    1.Serializable
    2.charsequence: 主要用来传递String,char等
    3.parcelable
    4.Bundle

    11.java int char long 各占多少字节
    错!!char是两个字节!!!!

    12.string stringbuffer和stringbuilder的区别
    string追加字符串都会创建新的对象
    stringbuffer是线程安全
    stringbuild是线程不安全的

    13.抽象类与接口的区别
    1.修饰符,接口是public,抽象类是public或者protect
    2.属性,接口的属性是public static final
    3.方法,抽象类可以有具体的方法。接口的方法没有方法实现,是public abstract
    参考:https://www.cnblogs.com/dolphin0520/p/3811437.html

    14.泛型中? super T和? extends T的区别
    extends T 代表T的子类,只能读不能写,因为可以按照T去读!!
    super T代表T的父类,只能写,不能读,可以写T或者T的子类
    参考:https://www.cnblogs.com/softidea/p/5280921.html
    https://www.cnblogs.com/suxuan/p/4970467.html

    15.lock()与lockInterruptibly()的区别
    lockInteruptibly在等锁的过程中,然后被中断,就会进入中断异常。

    https://gotowqj.iteye.com/blog/2103793

    16.Activity-Window-View三者的差别
    在Activity的attach方法中创建了phonewindow,在setcontentview的时候添加了decordview,WindowManagerGlobal中新建了一个ViewRootImpl,ViewRootImpl的setview方法会触发一次绘制。

    17.fragment各种情况下的生命周期


    image.png

    18.java对象生命周期

    1.  创建阶段(Created)
      
    2.  应用阶段(In Use)
      
    3.  不可见阶段(Invisible)
      
    4.  不可达阶段(Unreachable)
      
    5.  收集阶段(Collected)
      
    6.  终结阶段(Finalized)
      
    7.  对象空间重分配阶段(De-allocated)
      

    Android为什么引入Parcelable?
    不需要反射,速度更快。

    19.oom是否可以try catch
    https://www.zhihu.com/question/54630917

    20.一张Bitmap所占内存以及内存占用的计算
    ARGB
    长度*宽度*4

    21.快速排序!!!!
    思想:将数字分成大小对半!!!!

    22.Service有onStop吗??
    没有!!!!

    23.HashMap的负载因子是什么??
    用来判断扩容用的,如果hashmap数量大于容量*负载因子,就扩容!!!

    14.Java 多线程文件读写操作怎么保证并发安全?
    参考:https://www.jianshu.com/p/89cad15fff31

    15.两个Activity之间跳转时必然会执行的是哪几个方法?
    一般情况下比如说有两个activity,分别叫A,B。

    当在A 里面激活B 组件的时候, A会调用onPause()方法,然后B调用onCreate() ,onStart(), onResume()。

    这个时候B覆盖了A的窗体, A会调用onStop()方法。

    如果B是个透明的窗口,或者是对话框的样式, 就不会调用A的onStop()方法。

    如果B已经存在于Activity栈中,B就不会调用onCreate()方法。

    作者:m_xiaoer
    来源:CSDN
    原文:https://blog.csdn.net/m_xiaoer/article/details/72881082
    版权声明:本文为博主原创文章,转载请附上博文链接!

    16.捕捉应用崩溃?
    Thread.UncaughtExceptionHandler

    17.java静态变量在哪个区?
    1.程序计数器
    2.java栈
    3.本地方法栈
    4.堆
    5.方法区

    18.模块化与组件化区别?

    19.堆是什么?
    完全二叉树,用数组表示。

    20.Activity与fragment生命周期


    Activity.png

    21.https是什么
    http与ssl协议的结合体。
    服务器发送公钥给客户端,客户端生成一对密钥对,客户端用公钥对密钥对进行加密,传送到服务器。服务器用私钥解密出密钥对,然后进行通信!!

    22.AQS是什么?
    是一种排队的队列,对头获取到锁,处理完后,唤醒下一个节点处理。

    23.git merge和git rebase区别
    git merge如下图,会生成一笔新的提交,并且这个提交有两个parent。


    image.png

    24.git rebase是让分支回到从服务器拉取的点,然后将另一个分支的提交和本分支的本地提交打成一个个的patch,然后按时间顺序打回去。


    image.png

    25.c语言定义宏获取最大值?
    define MAX(a,b) (a>b)?a:b

    26.注解怎么用?
    实际上是有一个类文件,通过反射获取到对象。
    参考:
    https://www.cnblogs.com/a591378955/p/8350499.html

    思想篇:
    https://blog.csdn.net/hsk256/article/details/51530667

    27.sleep会放弃cpu资源吗?
    会的。就是让cpu在多长时间内不分配时间片给她。
    参考:http://blog.sina.com.cn/s/blog_91c0fdb50102v5yt.html

    28.进程与线程的区别
    1.进程是资源分配最小单位,线程是程序执行的最小单位。
    2.进程独立地址空间
    3.多进程更加健壮。

    29.android的应用内多进程是怎样的?
    就是产生了多个进程啊。

    30.父进程和子进程如何通信
    管道

    31.多进程同时写一个文件会怎样?
    用系统调用write方法没有问题。用fwrite,fwrite是用户空间,有缓存。
    参考:https://blog.csdn.net/yangbodong22011/article/details/63064166/

    32.进程调度算法有哪些?
    先来先服务调度算法
    短作业(进程)优先调度算法
    高优先权优先调度算法
    高响应比优先调度算法
    时间片轮转法
    多级反馈队列调度算法

    33.frok与vfork区别
    frok会复制数据与堆栈
    vfork只会复制堆栈,且首先运行。

    34.default与protected哪个更自由?
    protected更自由,外包子类可以访问protected。

    35.外部类可以用protected或者private修饰吗?
    不能

    36.外部类可以用static修饰吗?
    不能。

    37.嵌套接口怎么用?
    嵌套的接口默认是public static
    接口中的属性的默认是public static final 、方法是public abstract

    相关文章

      网友评论

          本文标题:

          本文链接:https://www.haomeiwen.com/subject/kyaaiqtx.html