`
文章列表
面试问题   什么守护线程      这个是曾遇到的面试题    没回答好 ,这里记录下来。      1、解释守护线程 :  顾名思义就是守护其他线程的线程。守护线程不能独立存在,其它线程都结束过后                                      守护线程也会结束。      2、举个例子: jvm 的GC 线程就是 守护线程
面试问题 Java HashMap 1.8的改进   1、  1.7 中的HashMap  的问题          (1)查找效率低:极端情况下--所有的 hash值都是冲突的话   查找一个key 就要遍历整个链表一遍          (2)扩容可能导致 死循环:   2、1.8 中的HashMap 改进          (1)  链表长度到达阀值(默认是8),就会将链表转换成红黑树        (2)  解决了扩容死循环问题:jdk1.8之前和之后不同之处就是jdk1.8后是直接把节点放到                      newtable[j]尾节点,而 ...
面试-java锁--synchronized   0、synchronized  隐式锁   1、锁的目的:控制并发,防止多线程修改数据出问题。   2、最简单的 -- synchronized   2.1 Monitor             Java虚拟机给每个对象和class字节码都设置了一个监听器Monitor ...
面试 BIO  NIO  AIO      1、 BIO       NIO       AIO 阻塞   是          否         否 同步   是          是         否     可以参考  https://blog.csdn.net/m0_38109046/article/details/89449305   2、阻塞 :  指的是处理线程的阻塞                     InputStream  的  read 方法是阻塞的 :jdk 文档里说:                     This method blo ...
转--ThreadPoolExecutor 使用说明----熟悉一下应付面试     ThreadPoolExecutor 使用说明     它是一个ExecutorService,使用线程池中的线程执行提交的任务。通常我们使用Executors框架,定义使用。 线程池主要用来解决两类问题:通过缓存一定数量的可用线程,避免频繁的线程创建,销毁,来提升执行大量异步任务的性能;资源管理,包括线程及任务。同时也维护一些诸如完成任务数等统计数据。 为了能够获得更广泛的适用性,此类提供了多个可调整的参数及扩展性钩子,但是,开发者通常更倾向于使用更为便捷的Executors框架, ...

面试线程池

面试线程池   1、为什么用线程池  1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。   2、  3、         4、 三种排队策略: 直接传递:通常使
面试--线程的几种状态      

面试JVM模型

面试JVM模型   1、内存区域划分:  DK1.7及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。       2、     3、判断对像是否存活的算法 引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器+1,当引用失效,计数器-1.任何时刻计数器为0的对象就是不可能再被使用的。   优点:实现简单,判定效率高效,被actionscript3和python中广泛应用。 缺点:无法解决对象之间的相互引用问题。java没有采纳
面试之JDK1.8新特性   看到网上有个人总结了这样一句话,感觉比较通俗易懂; 速度更快 – 红黑树 代码更少 – Lambda 强大的Stream API StreamStream作为Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。 它也不同于StAX对XML解析的Stream,也不是Amazon Kinesis对大数据实时处理的Stream。 Java8中的Stream是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation), 或者 ...
面试讲讲Java HashMap   1、先讲1.7的       HashMap 是基于数组和单向链表的      默认长度 16                  Entity 结构:       扩容可能导致死循环      解决 扩容安全: 把一个线程非安全的集合作为全局共享的,本身就是一种错误的做法,并发下一定会产生错误。   所以,解决这个问题的办法很简单,有两种:   1、使用Collections.synchronizedMap(Map<K,V> m)方法把HashMap变成一个线程安全的Map 2、使用Hashtable、Co ...
面试请说说链表和数组                             链表                                           数组   长度               不固定                                          固定 内存连续         不要求                                         连续内存 内存使用         不浪费                                         可能浪费内存 追加节点        ...
转--解决hash冲突的三个方法   这个东西没怎么看懂  希望被问到时有个印象 目录 开放定址法 线性探测再散列 二次探测再散列 伪随机探测再散列 再哈希法
转--数组和链表的区别和优缺点总结     数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。 链表中各结点在内存中的存放位置是任意的。  链表与数组的主要区别 (1)数组的元素个数是固定的,而组成链表的结点个数可按需要增减;
面试请讲讲Redis   1、Redis 是什么 : 一个开源的、高性能、内存数据库                            开源---- 使用多 发展好                             高性能--- 官网说 能到 10万 qps                            内 ...
转--Redis常见面试题      介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。 Github 源码:https://github.com/antirez/redis Redis 官网:https://redis.io/   Redis支持的数据类型? ...
Global site tag (gtag.js) - Google Analytics