java知识点总结
一、java
1、容器
1)List
2)Set
3Map
2、字符串
1)String
为什么String对象不可变,而StringBuffer可变?
2)Stringbuffer
3)StringBuilder(线程安全的)
3、数组
1)数组复制(Arrays.copyOf、System.arraycopy、for)
2)数组扩容(Arrays.copyOf、System.arraycopy)
3)数组合并(Arrays.copyOf、System.arraycopy)
4)数组排序(冒泡排序、插入排序、选择排序、快速排序、Arrays.sort)
5)数组查找(二分法、Arrays.binarySearch)
4、多线程(生命周期、线程池)
1)线程的创建(Thread、Runnable)
2)线程声明周期
创建、就绪、运行、阻塞、结束
阻塞原因:线程阻塞的原因
3)线程池
4)ThreadLocal
5)线程同步方式
synchronized、Lock(重入锁)、ThreadLocal
6)volatile
5、设计模式
1)代理模式
jdk
cglib:CGLIB介绍与原理
6、jvm及gc
jvm:计数器、栈、堆(新生代(Eden-E、From Survivor-S0、To Survivor-S1)、老年代-O、永久代-P)、方法去(老年代)
gc算法:标记-清理、复制、标记-整理、分代
gc方式:Minor GC(新生代)、Full GC(老年代、永久代)
[转]JVM运行时内存结构 jvm中的新生代Eden和survivor区
Java虚拟机(JVM)参数配置说明 JVM系列三:JVM参数设置、分析
二、spring
1、IOC
1)bean加载(BeanFactory和ApplicationContext区别)
2)bean注入(设值、构造)
3)scope(singleton、prototype、request、session、global session)
4)bean生命周期
5)bean的自动装配(no、byName、byType、construct、autodetect)——开发中通过注解@Autowired实现
6)BeanFactory和FactoryBean区别
Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
Spring中FactoryBean与BeanFactory的区别
2、AOP
1)自定义类如何用spring实现AOP
2)代理(jdk、cglib)
在需要代理类而不是代理接口的时候,spring会自动切换为使用cglib代理。但spring推荐使用面向接口编程,因此业务对象通常都会实现一个或多个接口,此时默认将使用JDK动态代理,但也可以强制使用cglib代理。
3、事务
1)隔离性(Serializable、Repeatable read、Read committed、Read uncommitted)
解决脏读、不可重读、泛读问题
2)传播性
解决事务创建时机问题
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
注:事务的隔离级别及传播方式可通过下面方式配置(propagation配置传播方式默认为REQUIRED;isolation配置隔离级别,默认为DEFAULT,用的为数据库的默认隔离级别,大部分数据库默认隔离级别为READ_COMMITTED,mysql为REPEATABLE_READ)
3)事务的实现原理
4、资源访问(Resource)
5、spring配置线程池
三、mysql
1、索引(唯一索引与其它索引的区别、索引原理、左优先)
四、网络
1、tcp/ip
1)tcp三次握手和四次握手
2、http头信息
http请求方式、host(服务器域名)、User-agent(客户端系统及浏览器信息)、Accept(浏览器接收内容类型)、Accept-language(浏览器语言)、Accept-Encoding(压缩编码类型)、Accept-Charset(字符编码集)、Content-Type(内容类型)、cookie
1、手写ArrayList
2、手写进制转换算法、求一个数的二进制的1的个数
3、spring类加载方式、反射、热部署
4、tcp/ip五层模型(应用层(表示层、会话层)、传输层、网络层、数据链路层、物理层)、restful接口规范(get、post、put、delete)OSI七层模型与TCP/IP五层模型
5、get、post区别,长度,安全
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
6、两个同一网络的主机,如何获取对方的mac地址
7、mysql引擎区别、索引原理(底层实现)、b+树原理
8、海量数据中找一个单词,分布式计算mapreduce
9、写一个设计模式
10、写一个生产者消费者
11、子网掩码将某个ip划分成网络地址和主机地址两部分。
12、数据库连接池作用(减少建立和关闭连接的开销)
13、tomcat配置,堆的初始化大小
14、缓存与内存的区别
15、长字符串中出现两次的字符
16、spring aop怎么实现的
17、排序算法最快的是那种,说出原理
18、synchronized和lock的区别(主要相同点:Lock能完成synchronized所实现的所有功能。主要不同点:synchronized是java的关键字,Lock是一个接口。Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放)Lock和synchronized比较详解,
不同的锁如何实现
volatile 内存可见性和原子性:Synchronized和Volatile的比较
19、mysql存储引擎(myisam、innodb、memory、bdb、archive )MySql存储引擎特性对比、
锁(表锁、行锁innodb、页锁dbd)MySQL锁详解、
聚集索引(适用范围搜索)和非聚集索引 聚集索引和非聚集索引(整理)、
索引长度 【MySQL】索引长度的一些限制 mysql 二级索引、
索引原理
20、jdk的并发包(java.util.concurrent) Java 并发工具包 java.util.concurrent 用户指南
21、线程池的使用流程(客户端封装task提交ExecutorService,执行execute和submit,execute没有返回值,submit会返回future,客户端可通过future的get获取执行结果)、
达到线程池线程数怎么处理(在没达到线程池数时,即使有空闲线程也会新创建,没有空闲线程,新提交的任务将会暂存缓存队列 ) Java多线程总结(6)— 线程池的基本使用和执行流程分析
22、什么情况下会被复制到老年代(from中年龄达到阈值的对象移动到老年代、to满全部移动到老年代、对象大小大于阈值直接存放老年代),
gc流程(minor gc会将eden中存活的对象复制到to中,from中对象年龄大于阈值的转移到old中,其余的复制到to中,此时to和from角色互换,如果to满,将to中所有对象转移到old中,old会不定时执行full gc,full gc是面向整个堆的,包括年轻代和老年代。年轻代使用复制算法,老年代使用标记-整理算法。minor gc触发条件为eden空间不足,full gc触发条件为执行System.gc()或old空间不足)GC详解及Minor GC和Full GC触发条件总结 ,jvm8结构 JVM8(4)java虚拟机内部结构
23、jdk7和jdk8(永久内存从堆内存中移到了本地内存)的内存结构 JDK8中JVM堆内存划分
24、用那种设计模式对hashmap实现线程安全(代理模式,给每个方法加sychronized)
25、String的hashCode方法(new String("abc")和new String("abc")的hash值相等,因为是通过值计算的,与引用无关)
26、String值如何手动放入常量池 String.intern()方法与常量池存入时的疑惑!
27、为什么hashmap的初始大小为2的整数次幂?(之所以hashmap的初始值取得是2的整数次幂,是为了减少h & (length-1)的碰撞,length-1确保每一位都是1,这样h的每一位都参与&运算,如果length-1有一位为0,那么h相同的那一位无论是0或1都没有参与的必要,因为都是0。所以length-1是为了确保h所有的为都参与运算,减少碰撞值)
28、spring面试题
29、equals和hashcode(区别联系、重写一个不重写另一个出现的情况) hashCode与equals的区别与联系
30、乐观锁和悲观锁(通过增加类似版本号的字段实现,更新时将版本号作为条件,如果之前查到的版本号和数据库中的不一致,则更新失败,一致就更新这条记录并更改版本号) Java 中的悲观锁和乐观锁的实现
31、公平锁和非公平锁(所谓公平锁指的是哪个线程先运行,那就可以先得到锁。非公平锁是不管线程是否是先运行,都是随机获得锁的) ReentrantLock之公平锁与非公平锁浅析 第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()
32、读写锁(读锁可以多个线程同时持有,写锁只能一个线程持有,有读锁需要等待释放才能获得写锁) 轻松掌握java读写锁(ReentrantReadWriteLock)的实现原理
33、b、b-、b+树 B树、B-树、B+树、B*树
34、FanctoryBean FactoryBean的使用
35、ConcurrentHashMap(每个位置相当于一个hashTable,锁的粒度只为当前位置,而不会像HashTable锁住整张表,当前位置用的ReentrantLock) ConcurrentHashMap实现原理 操作介绍
36、ThreadPoolExecutor JAVA进阶----ThreadPoolExecutor机制
37、servlet JSP/Servlet 工作原理(转载)
38、show profiles;查看做了哪些查询 show profile for query index;查看指定index的查询所用时间时间
39、hibernate先关问题?Hibernate的10个常见面试问题及答案 java面试常见问题之Hibernate总结
java知识点总结的更多相关文章
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- java知识点梳理
网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) ...
- 自己整理的所有java知识点(不断迭代中)
1. 自己整理的所有java知识点(不断迭代中) 画图工具注册 https://www.processon.com/i/599d35fae4b00d97d7f9bb17 1.1. Java整体知识架构 ...
- Java知识点-判断null、空字符串和空格
Java知识点-判断null.空字符串和空格 // 判断headerKey是否为null,空字符串或者空格 if (headerKey != null && headerKey.len ...
- typora中文版官方免费快速下载以及Markdown的一些常用语法、Java知识点
typora下载 链接:https://某度云盘的域名/s/1geD1APxnyV3gogYW3E08bQ 密码:8fdp 把某度云盘的域名进行替换 1.标题 # 标题1 ## 标题2 ### 标题3 ...
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
原文出处:CSDN邓帅 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行 ...
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- Java知识点脑图
做服务器开发有十几年了,其中大部分用到的都是Java服务器开发,从JDK1.4到现在的JDK1.8,从基本的Java Application到 J2EE(JBOSS,Glassfish),OSGI,到 ...
- 给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...
随机推荐
- 【codeforces】【比赛题解】#915 Educational CF Round 36
虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题……悲伤. 这次的Education ...
- 【技巧总结】Penetration Test Engineer[4]-Web-Security(文件处理、会话管理、访问控制、SSRF、反序列化漏洞)
Web安全基础2 3.8.文件处理 1)文件上传 一个正常的业务需求,问题在于控制上传合法文件. 防御文件上传 客户端javascript校验(通常校验扩展名) 检查MIME类型 检查内容是否合法 随 ...
- 2018 ICPC 徐州网络赛
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
- 08 Packages 包
Packages Standard library Other packages Sub-repositories Community Standard library Name Synopsis ...
- Nginx - upstream 模块及参数测试
目录 - 1. 前言- 2. 配置示例及指令说明 - 2.1 配置示例 - 2.2 指令 - 2.3 upstream相关变量- 3. 参数配置及测试 - 3.1 max_fa ...
- MyEclipse开发工具,当选中一个单词时,其他相同的单词会被高亮显示(选中/标记)
1.步骤: Window-->Preferences-->Java-->Editor-->Mark Occurremces下的 Mark Occurremces of the ...
- JS实现逼真的雪花飘落特效
逼真的雪花飘落特效 效果图: 图片素材 : --> ParticleSmoke.png 代码如下,复制即可使用: <!doctype html> <html> <h ...
- 为通过 ATS 检测 Tomcat 完全 TLS v1.2、完全正向加密及其结果检验
2017 年起 app store 要求 app 对接的服务器支持 TLS v1.2,否则 ats 检测不予通过.有点强制推 TLS v1.2 的意味.本文介绍如何使 tomcat 强制执行 TLS ...
- celery在Django中的集成使用
继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...
- Python中super的应用
约定 单继承 多继承 super 是个类 多继承中 super 的工作方式 参考资料 约定 在开始之前我们来约定一下本文所使用的 Python 版本.默认用的是 Python 3,也就是说:本文所定义 ...