Java哪些数据结构是线程安全的,CurrentHashMap的原理
ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue、
CopyOnWriteArrayList、CopyOnWriteArraySet、
vector、HashTable
ConcurrentHashMap原理:数组结构包含16个segment,每个segment也是table数组结构,包含了16个桶,每一个桶由hashEntry链表组成
使用了分离所技术,每个segment都有独立的锁。
CAS操作:compare and set的缩写,是指在set之前进行比较该值有没有变化,只有在没有变化的情况下才进行赋值

Java创建线程有哪些方式,线程池的使用和原理,拒绝策略等
继承Thread,实现Runnable,实现Callable,线程池
线程池的原理:
1.调用线程池创建线程时,先判断当前执行线程的数量是否小于核心线程池的线程总数量corePoolSzie,如果小于则新建成功,大于等于则判断工作队列是否已满,没满
则将任务存储在队列里等待执行,如果队列满了,则在非核心线程池新建线程,如果线程数量小于maximunmPoolsize则新建成功,如果大于,则新建线程的请求将被拒绝,并执行饱和策略
饱和策略:
a.abort策略:默认策略,新任务提交时直接报出异常
b.CallerRuns策略:任务提交时既不抛弃,也不抛出异常,而是在调用者线程中执行任务。
c.Discard策略:提交新任务时,不报异常,直接抛弃任务
d.DiscardOldest策略:放弃队头的任务,将新任务提交,执行

Android实现异步有哪些方式,我回答了可以用Thread+Handler(HandlerThread),AsyncTask,RxJava。
1.继承Thread,实现Runnable,实现Callable,线程池,handler post runable,asyncTask,intentService
Handler的讲了实现机制、对源码理解,AsyncTask主要讲了几个回调方法在实际项目中如何使用,
1.handler原理:在主线程中new 一个handler,子线程调用其sendMessage(),发送消息,handler内部通过getloop获取主线程的loop对象,loop对象内部有一个消息队列,将要send的message对象放入其中。
通过不断循环取出message对象,message对象持有了发送他的Handler对象,会调用其handlerMessage(),从而在主线程中拿到子线程传递的数据
2.AsyncTask原理:内部用两个实现了executer接口的对象,一个是serialExecuter对象使用arrayDeque控制任务,先进先出的执行。另一个是线程池对象,
负责执行任务。包含了onPreExecutor()在主线程中执行准备工作,doInBackground()负责执行后台任务,onProgressUpdate()在UI线程中更新任务执行进度,onPostExecuter()在主线程中显示结果,onCanceled()取消任务执行
RxJava主要说了事件订阅机制,线程控制,map,zip,上下游流量控制。
1.subscribe()给被观察者添加一个观察者,subscribeOn()在io线程中执行,observeOn()切换到UI线程,map()对象变换,
Android四大组件有哪些,都有哪些回调方法,主要问了Activity,活动切换时两个活动生命周期是怎么变换的

Java内存管理,主要说的是堆内存的管理,回答了新生代、老年代的区别,如何通过JVM参数对新生代过渡到老年代进行控制,GC常见算法,垃圾收集器讲了CMS,
堆内存分为:年轻代,老年代,持久代。年轻代有被分为eden,survivor1,survivor2,
通过-XX:MaxTenuringThreshould控制其被GC回收的次数,年龄,来控制是否过度到老年代.
gc常见算法:引用计数,标记清楚,标记整理,复制,增量收集,分代
https://my.oschina.net/manmao/blog/601933
快排的原理,最好、最坏情况以及对应时间复杂度,从递归方程式上给他说了下。
从数组中取一个基准数,将其和数组其它数据比较,比它小的放到左边,大的放大右边.然后在对左边和右边的数据按此方法操作,直到组织只有一个元素为止.
时间复杂度最好的情况是O(nlogn),最坏的情况:O(n~2),空间复杂度是O(nlogn)

最新文章

  1. 【记录】ASP.NET MVC MapRoute .htm 不起作用
  2. 四则运算之Right-BICEP测试
  3. TinyPNG---一个压缩PNG的神站
  4. ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试
  5. gridview 单击行时如何让SelectedIndexChanging事件响应
  6. NotePad++ 列模式(在多行开头统一添加相同内容)
  7. Hibernate征途(六)之数量和关系映射
  8. makefile常用指令和常见变量。
  9. 算法面试题 之 最长递增子序列 LIS
  10. Windows系统安装pip方法
  11. WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
  12. 力扣(LeetCode)69. x 的平方根
  13. 服务发现 - consul 的介绍、部署和使用(转)
  14. 浏览器 User Agent字符串列表
  15. 实例说明optimize table在优化mysql时很重要
  16. git subtree:无缝管理通用子项目
  17. python脚本3_输入若干个整数打印出最大值
  18. laravel跨域问题
  19. Shell--nl命令
  20. alert弹窗方法1

热门文章

  1. php中使用Curl、socket、file_get_contents三种方法POST提交数据
  2. 1107 Social Clusters[并查集][难]
  3. 模块讲解----反射 (基于web路由的反射)
  4. (15)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第三部分(完)
  5. 关于GET POST
  6. 按月、按日进行数据统计的Mysql语句
  7. Java 异步处理 三种实现
  8. Linux内核分析第五周 扒开系统调用的三层皮(下) (20135304 刘世鹏)
  9. 205315Java实验二实验报告
  10. php+mysql 注入基本过程