IO 流

  1. java 中有几种类型的流
  • 按照流方向:输入流 输出流
  • 按照处理数据单位: 字节流,字符流
  1. 字节流和字符流的区别
  • 字节流读取的时候,读到一个字节就返回一个字节 字符流对读取多个字节时会先去查询指定的编码表,然后再将查询到的字符返回
  • 字节流可以处理所有的类型数据 字符流只能查询字符数据
  1. 什么是java的序列化
  • 序列化是一种用来处理对象流的机制,是可以将对象持久化保存在硬盘中也可以读取硬盘中的持久化的对象
  • 序列化的实现:需要被序列化的类实Serializable接口,该接口只是为了标识这个对象可以被序列化,然后构照一个对象流(ObjectOutputStream)输出流的实例 在使用writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输入流
  • 序列化使用的场景
  • 需要通过网络来发送对象,或对象的状态需要持久化到数据库或者文件中
  • 需要复制对象的时候 序列化可以进行深复制,既可以复制引用的对象

集合

  1. ArrayList、HashSet、HashMap 是线程安全的吗?
  2. 查看他们底层源码中他们所以方法都没有锁对象,所以不是线程安全的!
  3. ArrayList 内部是用什么实现的
  • ArrayList 是用一个Object 动态数组实现的 最好对 list 的crud 操作叙述一下
  1. 说说ArrayList 和linkedList Voctor 的区别
  • ArryList 底层是数组 所以查询快,增删慢
  • LinkList 底层是链表 所以增删快 查询慢
  • Voctor 底层是数组 但是线程是安全的 所以crud 都相对较慢
  1. List和map Set 的区别
  • list 和set是储存单列集合 map是储存双列集合
  • list 有序可重复 set 无序不可重复(位置根据Hashcode 的值来决定 所以在存储一段数字的时候可能出现排好序的情况)map 的是无序键不可重复
  1. List a=new ArrayList()和 ArrayList a =new ArrayList()的区别?
  • List a=new ArrayList() 是使用了多态 但是他的对象还是List 只能使用List和Arrylist 共有的方法
  • ArrayList a =new ArrayList() 是直接创建对象 可以使用所有的ArrayList的方法
  1. map 中的key value 可以为null吗
  • 这个要看具体的实现类 例如hashMap 的对象key value 度可以为null 但是只能有一个不能重复
  • hahTable 对象的 key value 值均不可以为null
  1. JAVA 中NIO是什么
  • NIO 是非阻塞IO 与传统Socket 相比 NIO 在采用非阻塞的方式在处理大量并发请求的时候NIO 要比使用Socket效率高的多
  1. Collection和Colletions 有什么区别
  • Collection 是一个集合的类的父接口,是提供对集合操作的通用接口方法
  • Collections 是针对集合的一个包装类,他提供一系列静态方法对各种集合的搜素。。。等一系列操作

多线程

  • 进程和线程的区别
  • 进程是资源分配的最小单位,线程是Cpu调度的最低单位
  • 与进程相比,线程的创建和切换比进程开销更小
  • 使用多线程能简化程序的结构,使用程序便于理解和维护,一个复杂的进程可以分成多个线程来执行
  • Thread 中的Start方法和Run方法的区别
  • 线程是调用Start()方法启动线程,该线程处于就绪状态,而非运行状态,也就意味着这个线程可以被JVm 调用执行 而直接调用线程的Run方法只是被当为普通线程调用 Start方法异步调用run方法开启线程!
  • Thread 和Runnable 有什么关系
  • Runnable接口真的是仅仅是一个接口,它并不是一个线程,不能用来启动线程,真正执行线程的还是Thread。Runnable字面意思也就是可执行的,我的理解是Runnable接口用来定义可以给线程执行的东西,也就是把run()方法的代码仍在线程去执行
  • image-20190601103137570
  • 在源码中Runnable 接口只有一个Run 方法,我们都知道直接调用Run方法是不可以实现线程的所以它还是依赖Theread 中的Start()方法
  • 如何给Run方法传参
  • 构照函数传参
  • 成员变量传参
  • 回调函数传参
  • 如何实现处理线程的返回值
  • 主线程等待
  • 使用Thread 类的Join()阻塞当前线程以等待子线程处理完毕
  • 通过Callable 接口实现:通过FutureTask Or 线程池获取线程
  • 线程的状态
  • 六个状态
  1. 新建(new) 创建后尚未启动的线程状态
  2. 运行 (Runnable) 包含Running和Ready
  3. 无线期等待(Waiting) 不会被cpu分配执行时间,需要显示唤醒 被wait和join 陷入等待
  • 调用了wait()和Join() 方法没有设置时间参数
  1. 限期等待(Timed Waiting) :在一定时间后会自动唤醒
  • 调用了wait()和Join() 方法没设置了时间参数
  1. 阻塞状态(Blocked) 等待获取排它锁
  2. 结束状态(terminated) 已终止状态,线程已经结束执行
  1. image-20190601114225772
  • Sellp 和wait 的区别
  • Sellp 是Thread 的方法 Wait()是Object 类中定义的方法
  • Sleep() 方法是可以在任何地方使用,wait()方法只能在synchronized方法或者synchronized 块中使用
  • Sleep() 需要抛出异常,Wait 不需要
  • Thread.sleep 只会让出Cpu,不会导致锁行为的改变
  • Object.wait 不仅让出Cpu,还会释放同步资源锁
  • notify和notifyAll 的区别
  • 要了解这两个区别 我们首先了解一下两点
  • 锁池
  • image-20190601112708891
  • 等待池
  • image-20190601112743913
  • NotifyAll 会让所有处于等待池的线程全部进入锁池去竞争获取锁的机会,notify只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会

arraylist线程安全吗_Java面试复习-IO和多线程相关推荐

  1. arraylist线程安全吗_java集合----超详细图解(ArrayList线程安全解决三种解决方法!)...

    (注意:多线程情况下的判断,如果你能确定就两个线程(不包括main主线程或者是说GC),判断可以用if,但如果是多个线程则用while,否则会出现错误)ArrayList线程安全的几个问题解决(Has ...

  2. arraylist线程安全吗_Java的线程安全、单例模式、JVM内存结构等知识梳理

    java技术总结 知其然,不知其所以然 !在技术的海洋里,遨游! 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 本篇以一些问题开头,请先不看答案,自己思考一下,看一下你 ...

  3. arraylist线程安全吗_Java中的集合和线程安全

    通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所 ...

  4. 线程 sleep 取消_Java面试集锦:25道线程类相关面试题与答案(下)

    26. 并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行. 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对 ...

  5. arraylist线程安全吗_Java中的List你真的会用吗?不会用的话请收藏我的这篇文章...

    List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List List 是 ...

  6. Java面试宝典系列之面试复习提纲

    Java面试复习提纲 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqi ...

  7. Java面试复习提纲

    Java面试复习提纲 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqi ...

  8. Unity C# 游戏客户端面试复习

    Unity C# 游戏客户端面试复习 为了游戏客户端而自己准备的面试复习资料,若有错误欢迎指正 C# 装箱与拆箱操作 装箱:值类型=>引用类型 拆箱:引用类型=>值类型 .Net中,数据类 ...

  9. Android面试复习资料整理

    Activity巩固和复习 1. 什么是Activity 四大组件之一,通常一个用户交互界面对应一个activity.activity是Context的子类,同时实现了window.callback和 ...

最新文章

  1. php图片如何让浮动,页面中用css属性怎么控制图片自定义浮动?(示例)
  2. Matlab xcorr函数详解
  3. NTP时间服务器安装
  4. bzoj1013,luogu4035-[JSOI2008]球形空间产生器【高斯消元】
  5. powermock模拟对象_使用PowerMock模拟构造函数
  6. 拓端tecdat|Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW
  7. Qt Qml 开发超高清 4K、8K 视频直播视频客户端
  8. origin拟合曲线方法
  9. 中继器、集线器、网桥、交换机、路由器
  10. 机器学习第五章之决策树模型
  11. php cunstruct,南开大学海外大学生物学类教授一览
  12. 荧光和明场图像融合 matlab,一种用于明场显微成像的多层图像融合算法
  13. JavaScript实现京东首页轮播图
  14. Lintcode51:上一个排列
  15. 汽车诊断仪常用特殊功能-节气门匹配
  16. 年入200万的华人程序员,过了30岁就成傻逼了?
  17. 深度linux禁用独立显卡,deepin显卡设置
  18. 深入理解LINUX内核(影印版第3版)》的笔记
  19. 有关大数据(如有侵权请联系博主删除)
  20. 易语言多线程多参数自定义封装

热门文章

  1. webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度...
  2. 腾讯一面总结-web前端-2018.4.11
  3. 2017 Q1网络安全市场报告:未来5年,全球网络安全支出将超过1万亿美元
  4. ES6新特性2:变量的解构赋值
  5. php+flash实现转盘抽奖(加源代码)
  6. This关键字的一些更新的理解
  7. 【Java笔记】【Java核心技术卷1】chapter3 D4变量
  8. spring 之 BeanPostProcessor
  9. (十一)C语言中内存堆和栈的区别
  10. CentOS RabbitMQ安装