关于java基础1.String,StringBuilder,StringBuffer区别是什么?底层数据结构是什么?分别是如何实现的?2.HashSet的底层实现是什么?它与HashMap有什么关系?3.Java 的并发包里面有那些知识点?4.HashCode与HashMap的关系?5.哈希函数的理解?6.map在put()的做了哪些事?7.如果发生hash碰撞,有什么方法可以解决?8.各种类型的锁?9.synchronize和lock?10.hashTable的数据结构?11.线程安全的map即HashTable和CurrentHashMap,底层的线程安全是如何实现的?12.hashCode的原理?13.什么情况下需要重写类的hashCode()方法?什么时候需要重写equals()方法?14.hashmap添加元素,如果通过hash值得到的位置如果有元素,哪一种情况会取代所在的元素?15.HashMap添加元素,如果是所得的桶数组的位置有值。
该值则被添加到链表尾端,为什么会是尾端?16.ArrayList和hashmap底层结构,以及CurrentHashMap解决了什么问题;17.Hashmap的是否线程安全?为什么是安全或者不安全?18.HashMap、HashTable以及ConcurrentHashMap的区别;19.volatile关键字的理解;用在哪些场景?20.线程的理解以及其实现方式;21.线程池的参数有哪些?实现原理;22.线程同步方法有哪些?23.缓存的原理?为什么要用缓存?为什么会比数据库查询快?24.反射机制的理解;25.Object中的方法;26.String的toString()方法的实现?底层原理?27.NIO与IO的异同;28.垃圾回收机制的理解;29.java8的新特性有哪些?如何使用?30.static关键字的场景和意义;(拓展:final)31.如何理解事务?32.虚拟机的内存结构;33.动态代理的两种实现方式;34.悲观锁和乐观锁的区别35.如何解决跨域问题?36.xml文件解析方式有几种37.synchronize的锁的类型38.秒杀系统的设计39.分库分表40.Spring底层是如何实现的;41.Tomcat容器启动的时候,spring的启动流程;42.SpringAop除了动态代理,还用了其余的什么原理?43.rpc框架44.事务的隔离级别和传播机制45.docker46.高峰期如何进行分流高并发1.造成线程安全的主要因素有哪些:2.互斥锁是什么?java锁如何分类?3.关于锁名词的分类4.线程的创建方式;5.三种创建方式分别有什么区别?(最终可以追究到最底层)6.线程池的核心参数是哪些?分别表示什么意义?7.通过线程池创建线程的流程是什么?8.Lock接口;9.synchronize和volitile的区别?10.设计一个高并发的网站通用的技术有哪些?11.CAS是什么?12.JUD是什么分布式1.关于分布式的一些基本概念2.springboot与spring相比优势是什么?3.springboot自动配置的原理是什么?4.如果自己集成一个jar包到springboot中,该如何做?5.如何解决分布式事务问题?web1.servlet的实现以及其中的方法;2.token生成的原理;常用的设计模式关于前端1.闭包的理解;2.js函数的理解;3.如何优化前端?关于框架spring1.springIOC的理解;2.spring是如何通过xml配置或者注解配置生成实例对象的?3.springIOC的java底层原理;4.反射5.springAOP的理解;6.springAOP的底层的实现原理;7.spring如何解析视图;8.spring的常用注解;9.springmvc和Struts2的差异;10.如何控制事务;11.事物的隔离级别和传播机制;12.Spring BeanFactory与FactoryBean的区别;13.springAOP的应用场景;mybatis1.mybatis的结构?2.配置文件如何配置?3.mybatis处理多个参数的几种方式?4.占位符有几种?区别是什么?5.一级缓存和二级缓存的区别?6.Mybatis的类型转换器?7.mybatis接口没有实现类,他是如何操作数据库的?hibernatemybatis 与hibernate的对比;优势,劣势,原理,如何选择;SpringBoot1.springboot与springmvc最大的优势在哪?2.一个加了事务注解的“新增方法”,抛出异常,数据有没有添加成功?关于工具的使用1.git和svn的区别以及各自优势2.Jenkins的搭建和配置;3.maven是如何管理jar包版本的;关于数据库关系型数据库1.limit关键字从0到10与从100000到200000效率相差几个数量级,为什么?2.mysql的架构;3.索引的原理;4.索引的选取原则(通用):5.为什么索引导致查询效率高?操作数据效率低?6.索引的底层结构是什么?是如何实现的?7.哪些查询会用到索引?哪些查询用不到索引?8.索引类型?9.聚集索引和非聚集索引10.聚集索引的优缺点11.mysql索引的数据结构12.数据库的隔离级别分别是什么?13.sql的优化方案;14.left join 与inner join的差别;15.mysql的存储引擎MyIsam和InnoDB的区别;16.主键和唯一索引有啥区别?17.唯一索引能不能为空?非关系型数据库1.常用哪些非关系型数据库?哪些场景会用到?2.redis如何进行持久化?关于网络协议1.UDP与TCP的异同;2.http的理解;3.webSocket编程;4.什么是ajax?原生的ajax如何写?5.比较get请求和post请求的异同;关于linux操作1.常用的文件操作命令;2.查看线程信息的命令;3.查看内存的命令;4.部署项目的命令;5.mac与Linux服务器文件传输命令;关于算法1.常用的排序算法有哪些,分别如何实现(原理)?2.java中有哪些排序方式?原理是什么?3.两个按降序排序的数组,用效率最高的算法组合成一个按降序排列的新数组;4.回文字符串的个数;5.一个若干字符串中括号的对数;6.斐波那契的实现;7.单向链表反转?8.台阶问题?9.输入一个字符串,输出一出现频率最高的字符,如果出现频率相同,则输出第一个字符;关于数据结构1.常用的数据结构;2.hashmap是什么数据结构?3.堆、栈、队列的特性是什么?4.树的应用场景是什么?5.二叉树与红黑树的理解;关于所做项目1.读写如何设置同步和异步;2.如何处理排他处理?思路:数据库中存一个时间戳字段,每次加载页面的时候将时间戳带到页面隐藏域。
向后台发送请求的时候将该时间戳与数据库中所存的时间戳对比,如果一致的话说明该数据没有被他人更新,如果不一致说明数据被他人更新了。
3.如何判断用户是否重复操作;可以有如下几种方案:1)数据库层面:添加唯一性约束,通过账号、名称等信息进行唯一性约束;2)页面层面:可以对操作按钮进行点击限制;3)后端层面:提交时生成的token(一般是时间戳),存与session,提交到后端与之对比;4.如何实现实时显示大计算的结果?5.如何防止重复支付或者重复退款?6.项目中如防止重复生成订单?7.项目中遇到什么难题?是如何解决的?8.下单时,如果在支付的时候,反馈给用户的是失败,然而调用第三方是成功,如何处理?9.首先要缕清所有的流程,然后再拿出对应的数据表结构关于分布式1.分布式框架有哪些?2.dubbo和spring cloud的比较;3.Restful风格的接口的理解;4.rpc框架有哪些?如何使用?5.rpc和http的对比;6.负载均衡的理解;7.常用的mq的种类;(补充)8.RabbitMQ的作用?PS(SongLea)1.一个字符串里有多个左右括号如何判断这些括号都是一一对应的2.手写一个单例模式的代码3.手写实现一个blockingqueue的实现4.线程池的数量怎么确定,设多少?5.手写怎样实现一个LRU的缓存6.lru:最少未使用算法7.redis与rabbitmQ部分知识8.手写代码去实现一个读写锁9.代理模式有什么好处,怎么实现的10.Linux常用命令,如查看磁盘空间,内存大小,CPU利用率,机器信息,Jvm上的内存占用信息。
11.btree树,线程池,数据连接池,秒杀系统设计,回文字符串个数,线程如何变成运行态,事务的两种方式,垃圾回收机制,索引,hashmap,concurrenthashmap的结构12.缓存穿透如何解决13.object有哪些方法,hashmap线程安全不14.hash一致性,JUC包与sync关键字锁的区别与理解15.aba的问题;16.什么是乐观锁?什么是重入锁?17.CAS操作;18.常用的集合框架的底层实现;19.乐观锁和重入锁;。