2. Java都有哪些map,分别怎么实现的,具体讲

3. 除了LinkedHashMap,你还知道哪些有序map

4. ConcurrentHashMap讲一讲

5. 为什么要有线程池

6. 线程池有哪几类?有什么区别?有哪些参数?拒绝策略有哪些

7. 阻塞队列都有哪几种,有什么区别

8. Java的反射怎么理解

9. Spring的IOC和AOP怎么理解

10. Spring项目启动的时候会加载哪些资源,顺序是怎么样的

11. 浏览器输入一个URL,会发生什么,整个过程说一下

12. Http讲一讲,请求有哪些内容,响应有哪些内容

13. 你笔试分好高,平时刷过很多题吗?怎么刷的?

2. Java都有哪些map,分别怎么实现的,具体讲

Map 接口存储一组键值对对象,提供key(键)到value(值)的映射。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的value,Map的key不能重复,如果重复添加,会覆盖原来的值。
常用的有:HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap

HashMap是可以序列化的。是线程不安全的,底层主要是基于数组和链表实现,有相当快的查询速度,HashMap的底层是通过链表来解决hash冲突的。具体就是把相同hash值的HashMap,通过链表的形式进行存储,
HashTable是可以序列化的。是线程安全的,由synchronized修饰,不允许保存null,数据结构与HashMap是相同的
 TreeMap的实现是红黑树算法的实现
 ConcurrentHashMap采用了非常精妙的"分段锁"策略,ConcurrentHashMap的主干是个Segment数组。Segment继承了ReentrantLock,所以它就是一种可重入锁(ReentrantLock)。在ConcurrentHashMap,一个Segment就是一个子哈希表,Segment里维护了一个HashEntry数组,并发环境下,对于不同Segment的数据进行操作是不用考虑锁竞争的。
 LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。

3. 除了LinkedHashMap,你还知道哪些有序map

TreeMap、

4. ConcurrentHashMap讲一讲

https://www.cnblogs.com/ylspace/p/12726672.html

5. 为什么要有线程池

线程使应用能够更加充分合理的协调利用cpu 、内存、网络、i/o等系统资源。

线程的创建需要开辟虚拟机栈,本地方法栈、程序计数器等线程私有的内存空间。

在线程的销毁时需要回收这些系统资源。频繁的创建和销毁线程会浪费大量的系统资源,增加并发编程的风险。

另外,在服务器负载过大的时候,如何让新的线程等待或者友好的拒绝服务?这些丢失线程自身无法解决的。所以需要通过线程池协调多个线程,并实现类似主次线程隔离、定时执行、周期执行等任务。线程池的作用包括:

  • 利用线程池管理并复用线程、控制最大并发数等。
  • 实现任务线程队列缓存策略和拒绝机制。
  • 实现某些与时间相关的功能,如定时执行、周期执行等。
  • 隔离线程环境。比如,交易服务和搜索服务在同一台服务器上,分别开启两个线程池,交易线程的资源消耗明显要大;因此,通过配置独立的线程池,将较慢的交易服务与搜索服务隔开,避免个服务线程互相影响。

6. 线程池有哪几类?有什么区别?有哪些参数?拒绝策略有哪些

https://www.cnblogs.com/gaopengpy/p/12148971.html

newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor、newScheduleThreadPool、newSingleThreadScheduledExecutor

7. 阻塞队列都有哪几种,有什么区别

BlockingQueue

https://www.iteye.com/blog/wsmajunfeng-1629354

“生产者”和“消费者”模型中,生产者产出数据的速度和消费者消费的速度,,我们每个程序员都必须去自己控制这些细节,尤其还要兼顾效率和线程安全,而这会给我们的程序带来不小的复杂度。

当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。

当队列中填满数据的情况下,生产者端的所有线程都会被自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。

8. Java的反射怎么理解

https://www.cnblogs.com/jiangym/p/13560921.html

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

9. Spring的IOC和AOP怎么理解

https://www.cnblogs.com/chenssy/p/9576769.html

Inversion of Control 控制反转 它还有一个别名为 DI(Dependency Injection),即依赖注入。

所谓 IOC ,就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系

  1. 谁控制谁:在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你依赖的对象直接由你自己控制,但是有了 IOC 容器后,则直接由 IoC 容器来控制。所以“谁控制谁”,当然是 IoC 容器控制对象。
  2. 控制什么:控制对象。
  3. 为何是反转:没有 IoC 的时候我们都是在自己对象中主动去创建被依赖的对象,这是正转。但是有了 IoC 后,所依赖的对象直接由 IoC 容器创建后注入到被注入的对象中,依赖的对象由原来的主动获取变成被动接受,所以是反转。
  4. 哪些方面反转了:所依赖对象的获取被反转了

它降低组件之间的耦合度,实现软件各层之间的解耦,同时在保障不改变源码的情况下实现外部对象动态的注入到组件中,这样就能减少后期维护成本。

aop是主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

10. Spring项目启动的时候会加载哪些资源,顺序是怎么样的

https://www.cnblogs.com/jiangym/p/13567617.html

11. 浏览器输入一个URL,会发生什么,整个过程说一下

12. Http讲一讲,请求有哪些内容,响应有哪些内容

HTTP相关知识学习  https://www.cnblogs.com/jiangym/p/13592327.html

java面经学习002的更多相关文章

  1. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  2. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  3. java并发编程学习: ThreadLocal使用及原理

    多线程应用中,如果希望一个变量隔离在某个线程内,即:该变量只能由某个线程本身可见,其它线程无法访问,那么ThreadLocal可以很方便的帮你做到这一点. 先来看一下示例: package yjmyz ...

  4. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  5. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  6. 老鸟谈谈JAVA EE的学习

    老鸟谈谈JAVA EE的学习 因为出差和项目的原因,有将近一个月的时间没有更新博客了,今天终于得闲,和兄弟们分享一下JAVA EE的学习心得.书中带过,直入主题,下面我们首先看看什么是JAVA EE. ...

  7. Java虚拟机JVM学习07 类的卸载机制

    Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...

  8. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

  9. Java虚拟机JVM学习05 类加载器的父委托机制

    Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...

  10. Java虚拟机JVM学习04 类的初始化

    Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...

随机推荐

  1. Pytest 插件

    1. 执行标记用例执行次数 首先安装 repeat: pip install pytest-repeat @pytest.mark.repeat(n)执行当前用例 n 次 然后再往下执行其他用例 im ...

  2. Nextcloud报 PHP zip 模块未安装

    wget https://pecl.php.net/get/zip自动下载最新包 tar xf zip-1.20.0.tgz cd zip-1.20.0/ phpize 报错system libzip ...

  3. 分享至: 日本神話の考古学.PDF

    书本详情 日本神話の考古学 种类:Languages - General & Miscellaneous Languages - Reference年:1993出版社:朝日新聞社语言:japa ...

  4. SQL面试题,工作整理sql

    一.数据库和算法   表名:student,name,course,score    张青  语文  72    王华  数学72    张华  英语 81    张青 物理 671.用sql查询出& ...

  5. docker登录Ubuntu出现error storing credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`的解决方法

    命令行登录docker时,在Ubuntu 18.04下可能会出现 error storing credentials - err: exit status 1, out: `Cannot autola ...

  6. 剑指 Offer II 堆

    059. 数据流的第 K 大数值 class KthLargest { public: priority_queue<int,vector<int>,greater<int&g ...

  7. [笔记] Android开发中的gradle是什么?

    gradle是什么? 先看下文档中的介绍   https://docs.gradle.org/current/userguide/what_is_gradle.html Gradle is an op ...

  8. json 解析,JSON数组

    public class resuleobj { public int returncode { get; set; } public string message { get; set; } pub ...

  9. 本地搭建JupyterNotebook开发环境

    背景 Jupyter 是一款优秀的编程语言运行环境包括Hub.Lab.Notebook等优秀自项目,JupyterNotebook是衍生的在线交互运行平台的前端项目 环境 Windows 11 Nod ...

  10. 浅谈Redis与分布式锁

    为什么需要分布式锁 Redis如何实现分布式锁 如何避免死锁? 锁被别人释放怎么办? 锁过期时间不好评估怎么办? Redlock 真的安全吗 为什么要在多个实例上加锁? 为什么大多数实例加锁成功,才算 ...