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 里面 ...
随机推荐
- 编写shell脚本一键启动zookeeper集群!!
踩了一个多小时坑终于解决了: 这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!! 首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令 这里简单说下原理: 通过ssh去另外一台 ...
- JavaScript新手学习笔记(一)
1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...
- linux查看内存、CPU占用资源最多的进程
[内存占用] #利用ps命令,默认使用ps参数会显示的结果 ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 ...
- C++模板(Templates)
模板(template)是泛型编程的基础,"泛型"的含义就是没有不依赖具体的数据类型.模板的引入是为了创建一般性的类(模板类)或者函数(模板函数).典型的容器比如迭代器/算法等是泛 ...
- git —— 异常1,index.lock
git提交过程中出现的问题 解决方法:找到 index.lock文件将其删除 一般 index.lock 在.git下面, 有时 .git 是隐藏的,但是无论怎样, 可以通过 everything 找 ...
- 客户端使用less方法
<link rel="stylesheet/less" type="text/css" href="/css/style.less"& ...
- LongAdder类学习笔记
优秀原文 LongAdder | LongAccumulator简介 源码阅读:全方位讲解LongAdder 说到LongAdder,不得不提的就是AtomicLong.AtomicLong是JDK1 ...
- 汇编看C函数调用
http://blog.csdn.net/wishfly/article/details/5022008 简单的函数调用,通过简单的函数调用反汇编可以清楚了解如下 1.栈到底是什么,如何操纵栈的? ...
- Robust Mesh Watermarking
之前看了一篇题为"Robust Mesh Watermarking"的论文,查阅资料的时候发现了一篇与之很相似的名为"三维模型数字水印系统的设计与实现"的中文论 ...
- MAC下安装MAMP后,mysql server无法启动
用MAC下载安装了MAMP,之前使用是很好没问题的,但是突然无法启动mysql server,检查日志,提示InnDB出错,然后删掉了/Application/MAMP/db/mysql56目录下的i ...