java面经学习002
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修饰,不允许保存 数据结构与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 容器来负责对象的生命周期和对象之间的关系
- 谁控制谁:在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你依赖的对象直接由你自己控制,但是有了 IOC 容器后,则直接由 IoC 容器来控制。所以“谁控制谁”,当然是 IoC 容器控制对象。
- 控制什么:控制对象。
- 为何是反转:没有 IoC 的时候我们都是在自己对象中主动去创建被依赖的对象,这是正转。但是有了 IoC 后,所依赖的对象直接由 IoC 容器创建后注入到被注入的对象中,依赖的对象由原来的主动获取变成被动接受,所以是反转。
- 哪些方面反转了:所依赖对象的获取被反转了
它降低组件之间的耦合度,实现软件各层之间的解耦,同时在保障不改变源码的情况下实现外部对象动态的注入到组件中,这样就能减少后期维护成本。
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的更多相关文章
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- java并发编程学习: ThreadLocal使用及原理
多线程应用中,如果希望一个变量隔离在某个线程内,即:该变量只能由某个线程本身可见,其它线程无法访问,那么ThreadLocal可以很方便的帮你做到这一点. 先来看一下示例: package yjmyz ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- 老鸟谈谈JAVA EE的学习
老鸟谈谈JAVA EE的学习 因为出差和项目的原因,有将近一个月的时间没有更新博客了,今天终于得闲,和兄弟们分享一下JAVA EE的学习心得.书中带过,直入主题,下面我们首先看看什么是JAVA EE. ...
- Java虚拟机JVM学习07 类的卸载机制
Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...
- Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论
Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...
- Java虚拟机JVM学习05 类加载器的父委托机制
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...
- Java虚拟机JVM学习04 类的初始化
Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...
随机推荐
- Linux 配置共享目录方法
配置共享目录有三种方法: 第一种:使用Vmware自带的文件共享的功能,进入Vmware,点击虚拟机选项,然后点击"设置",再点击标签"选项"这一项,找到&qu ...
- dart+flutter中使用PaginatedDataTable分页时最后一页多出空白行问题
使用PaginatedDataTable时解决最后一页不够当前行的话会有很空白行的问题 解决的场景: 比如下图,28行数据,每页5行最后一页会多出两行空白. 解决方法: 可以使用PaginatedDa ...
- pj_time_swap
#!/usr/bin/python# -*- coding: UTF-8 -*- import timeimport refrom datetime import datetime, timezone ...
- ES6-Promise下
六.实例的finally方法: promise状态发生变化指的是由初始态变成成功或者失败态 处理错误指的是没有调用catch(失败态实例调用可以执行其回调的then) finally里面的回调函数只要 ...
- webpack5用url-loader(file-loader)处理图片和img-loader压缩图片
webpack-cli 4.0的版本和 webpack-dev-server 3.11.0的版本不兼容,只能用webpack@5.0 + webpack-cli@3.3.12 + webpack-de ...
- Elasticsearch Java client使用
前言 Elasticsearch官方列出了好几个客户端,如下所示 Java Client Java Rest Client(Java High Level REST Client) Java Tran ...
- 第13周 预习、实验与作业:Java网络编程
编写一个网络程序,为了与其他网络程序通信,至少要知道对方的什么信息? IP地址 TCP与UDP协议有什么不同的呢?什么时候该选择哪种协议?HTTP使用的是TCP还是UDP?不重要的短信息传送之类的功能 ...
- jar打包exe选型
网上一搜有篇文章写了9中不同工具方法,最后使用launch4j,其实就一点开源免费. launch4j>bsd3协议(可免费商用),像exe4j需要license. 经过摸索终于搞定一键启动并且 ...
- [CQOI2006]凸多边形 /【模板】半平面交
洛谷 题意:逆时针给出\(n(n<=10)\)个凸多边形的顶点坐标,求它们交的面积. 学长博客,计算几何知识全面 半平面交问题详细讲解 其他模板题推荐 [ICPC2020 WF] Domes [ ...
- xd p4 WEB源码拓展
WEB 源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中 WEB 源码有很多技术需要简明分析. 知识点 关于 WEB 源码目录结构 后台目录.模板目录.数据库目录 ...