目录

1、Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

2、Spring的AOP关于拦截private。

3、项目中的数据字典缓存实现方式:

4、分布式缓存

5、如何保证分布式数据最终一致性

6、spring层面做事务和数据库层面做的区别,各种的实现方式

7、Spring事务管理(详解+实例)

8、Mysql默认的事务隔离级别:可重复读

9、项目中的加密算法对比(DES,AES,RSA,MD5,SHA1,Base64)

10、Spring框架IOC和AOP的实现原理,AOP在Spring框架中的应用

11、Java动态代理之JDK实现和CGlib实现

12、什么时候索引失效

13、索引什么时候最高效

14、Mysql中的char,varchar,text区别

15、为什么说Redis是单线程的以及Redis为什么这么快!

16、从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏

17、tomcat类加载机制与JVM的类加载机制

18、java并发编程时需要注意事项:

19、线程同步方式(7种)及各个同步方式之间的区别

20、线程之间的通信(wait、notify、notifyAll进行线程之间的通信)

21、悲观锁与乐观锁的区别,底层实现原理

22、单例的七种写法及多线程使用的时候注意

23、常见的内存泄漏及防止

24、Java的内存调优

25、识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)

26、http的相关知识

27、redis底层实现

28、海量数据的查找最大、重复数据等

29、Java中的IO、(同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO)

30、arraylist.sort怎么实现:(Timsort是结合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法)

31、100亿个数找最大1000个(说了分片,用堆,再归并)

32、hibernate 缓存 mybatis 缓存对比

33、SpringMVC和Struts对比

34、线程池的实现原理(ThreadPoolExcuter)

35、算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。

36、举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)

37、NIO的实现netty(Netty实现原理浅析)

38、讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)

39、关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)


1、Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

http://www.importnew.com/28263.html

2、Spring的AOP关于拦截private。

private方法 在Spring使用纯Spring AOP(只能拦截public/protected/包)都是无法被拦截的 因为子类无法覆盖;包级别能被拦截的原因是,如果子类和父类在同一个包中是能覆盖的。 
在cglib代理情况下, execution(* *(..)) 可以拦截 public/protected/包级别方法(即这些方法都是能代理的)。

友情链接:https://www.cnblogs.com/protected/p/6652188.html

3、项目中的数据字典缓存实现方式:

1、通过全局HashMap实现:https://blog.csdn.net/bujibo/article/details/73811207

2、通过redis实现:http://www.cnblogs.com/leechenxiang/p/6115719.html

3、分布式系统缓存实现:https://blog.csdn.net/tangkund3218/article/details/50915007

4、一种基于“哨兵”的分布式缓存设计:http://blog.lichengwu.cn/architecture/2015/06/14/distributed-cache/

4、分布式缓存

友情链接:https://www.cnblogs.com/softidea/p/5555578.html

5、如何保证分布式数据最终一致性

友情链接:https://blog.csdn.net/hxpjava1/article/details/79409459

6、spring层面做事务和数据库层面做的区别,各种的实现方式

本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的.数据库的事务说简单就只有开启,回滚和关闭,spring对数据库事务的包装,原理就是拿一个数据连接,根据spring的事务配置,操作这个数据连接对数据库进行事务开启,回滚或关闭操作.但是spring除了实现这些,还配合spring的传播行为对事务进行了更广泛的管理.其实这里还有个重要的点,那就是事务中涉及的隔离级别,以及spring如何对数据库的隔离级别进行封装.事务与隔离级别放在一起理解会更好些。

Spring事务的实现方式(三种:XML配置,注解,AOP实现):https://www.cnblogs.com/WJ-163/p/6035462.html

数据库事务的实现原理:https://www.cnblogs.com/takumicx/p/9998844.html

7、Spring事务管理(详解+实例)

友情链接:http://www.mamicode.com/info-detail-1248286.html

8、Mysql默认的事务隔离级别:可重复读

9、项目中的加密算法对比(DES,AES,RSA,MD5,SHA1,Base64)

加密技术通常分为两大类:"对称式"和"非对称式"。

对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。(AES、DES、3DES

非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时为同样的道理。(RSA、DSA、ECC

散列算法:散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。(MD5、SHA1、HMAC

友情链接:https://www.cnblogs.com/sochishun/p/7028056.html

10、Spring框架IOC和AOP的实现原理,AOP在Spring框架中的应用

IoC(Inversion of Control)

AOP(Aspect Oriented Programming)

https://www.cnblogs.com/cyhzzu/p/6644981.html

11、Java动态代理之JDK实现和CGlib实现

二者的区别:

  1. cglib实现原理是通过集成被代理类来实现动态代理的,因而类的修饰符不能含有final修饰符,并且方法同样不能使用static和final等修饰符,若含有就不能实现增强方法
  2. jdk实现原理:代理对象和被代理对象必须同时实现同一接口(即含有同一套规范).

代理模式、JDK、CGlib:https://blog.csdn.net/qq_27717967/article/details/73561179

静态代理和动态代理、JDK动态代理与CGlib动态代理:http://www.cnblogs.com/ygj0930/p/6542259.html

Spring在选择用JDK还是CGLiB的依据:https://www.cnblogs.com/bigmonkeys/p/7823268.html

12、什么时候索引失效

https://www.cnblogs.com/areyouready/p/7802885.html

1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.
 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.
 错误的例子:select * from test where tu_mdn=13333333333;
 正确的例子:select * from test where tu_mdn='13333333333';
 2. 对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
 错误的例子:select * from test where id-1=9;
 正确的例子:select * from test where id=10;
 3. 使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.
 错误的例子:select * from test where round(id)=10; 说明,此时id的索引已经不起作用了
 正确的例子:首先建立函数索引,create index test_id_fbi_idx on test(round(id));然后 select * from test where round(id)=10; 这时函数索引起作用了
 4. 以下使用会使索引失效,应避免使用;
 a. 使用 <> 、not in 、not exist、!=
 b. like "%_" 百分号在前(可采用在建立索引时用reverse(columnName)这种方法处理)
 c. 单独引用复合索引里非第一位置的索引列.应总是使用索引的第一个列,如果索引是建立在多个列上, 只有在它的第一个列被where子句引用时,优化器才会选择使用该索引。
 d. 字符型字段为数字时在where条件里不添加引号.
 e. 当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。
 5. 不要将空的变量值直接与比较运算符(符号)比较。
 如果变量可能为空,应使用 IS NULL 或 IS NOT NULL 进行比较,或者使用 ISNULL 函数。
 6. 不要在 SQL 代码中使用双引号。
 因为字符常量使用单引号。如果没有必要限定对象名称,可以使用(非 ANSI SQL 标准)括号将名称括起来。
 7. 将索引所在表空间和数据所在表空间分别设于不同的磁盘chunk上,有助于提高索引查询的效率。
 8. Oracle默认使用的基于代价的SQL优化器(CBO)非常依赖于统计信息,一旦统计信息不正常,会导致数据库查询时不使用索引或使用错误的索引。

 一般来说,Oracle的自动任务里面会包含更新统计信息的语句,但如果表数据发生了比较大的变化(超过20%),可以考虑立即手动更新统计信息,例如:analyze table abc compute statistics,但注意,更新   统计信息比较耗费系统资源,建议在系统空闲时执行。
 9. Oracle在进行一次查询时,一般对一个表只会使用一个索引.
 因此,有时候过多的索引可能导致Oracle使用错误的索引,降低查询效率。例如某表有索引1(Policyno)和索引2(classcode),如果查询条件为policyno = ‘xx’ and classcode = ‘xx’,则系统有可能会使用索   引2,相较于使用索引1,查询效率明显降低。
 10. 优先且尽可能使用分区索引

13、索引什么时候最高效

表的主关键字

自动建立唯一索引

如zl_yhjbqk(用户基本情况)中的hbs_bh(户标识编号)

表的字段唯一约束

ORACLE利用索引来保证数据的完整性

如lc_hj(流程环节)中的lc_bh+hj_sx(流程编号+环节顺序)

直接条件查询的字段

在SQL中用于条件约束的字段

如zl_yhjbqk(用户基本情况)中的qc_bh(区册编号)

select * from zl_yhjbqk where qc_bh=’<????甼曀???>7001’

查询中与其它表关联的字段

字段常常建立了外键关系

如zl_ydcf(用电成份)中的jldb_bh(计量点表编号)

select * from zl_ydcf a,zl_yhdb b where a.jldb_bh=b.jldb_bh and b.jldb_bh=’540100214511’

查询中排序的字段

排序的字段如果通过索引去访问那将大大提高排序速度

select * from zl_yhjbqk order by qc_bh(建立qc_bh索引)

select * from zl_yhjbqk where qc_bh=’7001’ order by cb_sx(建立qc_bh+cb_sx索引,注:只是一个索引,其中包括qc_bh和cb_sx字段)

查询中统计或分组统计的字段

select max(hbs_bh) from zl_yhjbqk

select qc_bh,count(*) from zl_yhjbqk group by qc_bh

14、Mysql中的char,varchar,text区别

友情链接:https://www.cnblogs.com/chenpingzhao/p/4714411.html

15、为什么说Redis是单线程的以及Redis为什么这么快!

https://www.cnblogs.com/qwangxiao/p/8535202.html

16、从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏

17、tomcat类加载机制与JVM的类加载机制

https://www.cnblogs.com/aspirant/p/8991830.html

18、java并发编程时需要注意事项:

1、上下文切换会带来额外的开销

2、避免死锁的情况

3、计算机资源会限制并发(误区:不是线程越多越好)

https://www.cnblogs.com/ldq2016/p/9104218.html

19、线程同步方式(7种)及各个同步方式之间的区别

https://www.cnblogs.com/XHJT/p/3897440.html

1、synchronized修饰方法,修饰静态方法是同步整个类。
2、synchronized修饰代码块
3、使用特殊域变量(volatile)实现线程同步)
4、使用重入锁实现线程同步(ReentrantLock)
5、使用局部变量实现线程同步 (ThreadLocal )
6、使用阻塞队列实现线程同步(LinkedBlockingQueue等)
7、使用原子变量实现线程同步(AtomicInteger等)

20、线程之间的通信(wait、notify、notifyAll进行线程之间的通信)

https://www.cnblogs.com/Wenxu/p/7979023.html

https://blog.csdn.net/qq_42473704/article/details/81942347

21、悲观锁与乐观锁的区别,底层实现原理

https://blog.csdn.net/qq_34337272/article/details/81072874

22、单例的七种写法及多线程使用的时候注意

https://www.cnblogs.com/Sharley/p/5315959.html

23、常见的内存泄漏及防止

https://blog.csdn.net/wtt945482445/article/details/52483944

24、Java的内存调优

https://www.cnblogs.com/andy-zhou/p/5327288.html

25、识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)

26、http的相关知识

https://www.cnblogs.com/TomSnail/p/6078395.html

27、redis底层实现

https://blog.csdn.net/wcf373722432/article/details/78678504

28、海量数据的查找最大、重复数据等

https://blog.csdn.net/u010601183/article/details/56481868/

29、Java中的IO、(同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO)

https://www.cnblogs.com/dolphin0520/p/3916526.html

https://www.cnblogs.com/dolphin0520/p/3919162.html

30、arraylist.sort怎么实现:(Timsort是结合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法)

https://blog.csdn.net/qq_22167989/article/details/79236654

31、100亿个数找最大1000个(说了分片,用堆,再归并)

32、hibernate 缓存 mybatis 缓存对比

https://blog.csdn.net/yechuan_smile/article/details/80886235

https://blog.csdn.net/qq441568267/article/details/79566246

33、SpringMVC和Struts对比

34、线程池的实现原理(ThreadPoolExcuter)

https://www.cnblogs.com/zhaojinxin/p/6668247.html

35、算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。

36、举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)

37、NIO的实现netty(Netty实现原理浅析)

http://www.importnew.com/15656.html

38、讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)

39、关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)

Java面试题收集(三)相关推荐

  1. 经典Java面试题收集(一)

    categories: Interview description: 本文收集了一些经典的Java面试题 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类. 继承:基于基类创建 ...

  2. 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. 这篇文章介绍的常见面试题是关于重载(overloading)方法和重写( ...

  3. 【Java进阶营】Java面试题收集

    1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2.你所知道网络协议有那些? H ...

  4. 经典Java面试题收集

    转载自:http://geek.csdn.net/news/detail/256207 ,若需删除联系本人 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面:  - 抽象:抽象是将 ...

  5. Android java面试题收集

    1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟 ...

  6. Java笔试题(三)简答题

    1.forward 和redirect的区别 直接转发方式(Forward):客户端和浏览器只发出一次请求,Servlet.HTML.JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象req ...

  7. 用友2018秋招Java笔试题(三)

    常识: 对于GBK编码标准,英文占用1个字节,中文占用2个字节 对于UTF-8编码标准,英文占用1个字节,中文占用3个字节 对于Unicode编码标准,英文中文都是2个字节.这也是为什么叫做unico ...

  8. Java4班题库-传智专修学院Java面试题库三

    Java4班题库 =-=-=-=-=-此 处 分割线=-=-=-=-=- biubiubiu~觉得不错可以继续阅读其他博客哟 此播客如有侵权请联系我改正哦,日常在线,如不在线未及时回复请包涵等待 =- ...

  9. 零碎Java面试题收集

    java实现平方根 方案一:二分法,无限逼近 如何使用java语言计算一个正整数的平方根呢(自定义Sqrt函数)? - 灰信网(软件开发博客聚合) 时间轮的原理与应用 时间轮原理及其在框架中的应用_服 ...

最新文章

  1. bat脚本如何自动输入y_Linux系统如何设置开机自动运行脚本?
  2. Jupyter 官方神器:可视化 Debug 工具!
  3. Ceryx —— 基于 OpenResty 的动态反向代理
  4. 最简单也最难——怎样获取到Android控件的高度
  5. 【转载】jQuery最佳实践
  6. EM算法和GMM(上)
  7. 新加坡科技设计大学(SUTD)招收计算机视觉方向全奖PhD学生
  8. 窗体控件随窗体大小改变(仍有不足)
  9. 【数据结构与算法】实验 Dijkstra算法解决欧洲旅行问题
  10. php foreach bcc,php – 无法通过Mandrill发送BCC电子邮件(通过Laravel)
  11. 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
  12. php aws_2018-03-06 使用AWS PHP SDK将文件上传到AMAZON S3
  13. sql语句如何获得当前日期
  14. “移动办事之城”杭州:超8成个人办理事项凭身份证通办
  15. html怎么做小米logo,案例:纯CSS小米logo样式
  16. h2测试软件,H2testw怎么测试 H2testw测试结果如何看的详细技巧
  17. 国外统计学课程主页Statistical Books, Manuals and Journals
  18. 数据库分页数据丢失问题
  19. 第三次作业-李纯锐-201731084433
  20. 共阳极数码管与共阴极数码管联合使用来循环显示数字00-99。

热门文章

  1. 清除windows系统垃圾文件简易脚本(bat)
  2. Django-website 程序案例系列-1 最简单的web服务器
  3. C语言基础大全(基于千锋教育超详细教程)
  4. 混合整数二阶锥规划公式中具有不同动力学的定价惯性和频率响应
  5. 集团型企业主数据管理框架、方法
  6. 达梦数据查询编码_从数据库到全栈数据解决方案,达梦不走捷径
  7. psd文件一键瘦身脚本使用详细步骤
  8. PBO是OpenGL最高效的像素拷贝方式吗?那你就大错特错了
  9. 刀光剑影的大片背后站着特效巨人
  10. ws协议与http协议