8种基本数据类型
数据类型 | 位数梯度 | 位数 |
---|---|---|
byte(位) | 第一梯度 | 8 |
boolean(布尔值) | 第一梯度 | 8 |
short(短整数) | 第二梯度 | 16 |
char(字符) | 第二梯度 | 16 |
int(整数) | 第三梯度 | 32 |
float(单精度) | 第三梯度 | 32 |
double(双精度) | 第四梯度 | 64 |
long(长整数) | 第四梯度 | 64 |
重写和重载
(1)重写:子类重写父类的方法
(2)重载:存在于父类和子类,同类之间(入参个数,类型,顺序,返回值类型不同)
(3)重写不能抛出新的异常
https://www.runoob.com/java/java-override-overload.html
访问修饰符
类中的数据成员和成员函数据具有的访问权限包括:public、private、protect、default(包访问权限)
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
public 所有类可见
protected 本包和所有子类都可见(本包中的子类非子类均可访问,不同包中的子类可以访问,不是子类不能访问)
default 本包可见(即默认的形式)(本包中的子类非子类均可访问,不同包中的类及子类均不能访问)
priavte 本类可见
多线程问题
1.实现多线程的方法
(1)继承线程类Thread(重写run方法,start方法启动)
(2)实现Runnable接口(重写run方法,start方法启动)
(3)实现Callable接口(1.5后增加的)
(4)使用线程池(1.5后增加的)
2.sleep()方法与wait()方法区别
(1)Thread.sleep() 不会释放锁 时间到了唤醒
(2)Object.wait() 会释放锁 notify()/notifyAll():唤醒(不可以在非同步方法中使用上述三个方法)
3.synchronized和lock
(1)修饰方法或者代码块
(2)synchronized是java内置关键字,在jvm层面,Lock是个接口
(3)ynchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁
(4)Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题
4.进程和线程的区别
(1)进程是资源分配最小单位,线程是程序执行的最小单位
(2)进程之间的资源是独立的;同一进程内的线程共享本进程的资源
https://www.cnblogs.com/xiaoyinger/p/11614587.html
5.线程池
https://www.cnblogs.com/victorwux/p/9004564.html
servlet的生命周期
(Java编写的服务器端程序)
1.加载和实例化servlet
2.初始化 init()
3.请求处理 service()
4.服务终止 destroy()
https://blog.csdn.net/weixin_37020977/article/details/88787273
https://www.runoob.com/servlet/servlet-life-cycle.html
hashmap相关
(1)HashCode相同,通过equals比较内容获取值对象
(2)HashMap和HashTable的区别,hashTable是线程安全的,不允许为null键
(3)hashmap允许key和value为null
-- ==和equals的区别
https://blog.csdn.net/weixin_42194781/article/details/104388930
jeff: https://blog.csdn.net/qq_36760847/article/details/106689291
-- 关于hashcode
https://www.cnblogs.com/lanSeGeDiao/p/10813588.html
堆、栈、常量池
(1)常量池:存放常量,堆:存放用new产生的数据,堆:存放用new产生的数据
https://www.cnblogs.com/SaraMoring/p/5687466.html
String 和 StringBuilder、StringBuffer
(1)StringBuilder 的方法不是线程安全的,StringBuffer是线程安全的
https://blog.csdn.net/u011702479/article/details/82262823
java 容器
https://www.cnblogs.com/goody9807/p/6441114.html
ArrayList、Vector、LinkedList
(1)ArrayList与Vector来说底层都是用数组方式来实现的
(2)对于ArrayList来说所有方法都不是同步的,对于Vector大部分public的方法都是同步的
(3)对于ArrayList查找速度非常快,增加和删除操作非常慢。(本质上是由数组的特点来决定的)
(4)对于LinkedList查找速度非常慢,增加和删除操作非常快。(本质上是由双向循环链表的特点来决定的)
并发和并行的区别
https://blog.csdn.net/weixin_30363263/article/details/80732156?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare
JDK7、JDK8的新特性
JDK1.7:
(1)switch 支持 String
(2)单catch处理多异常
JDK1.8:
(1)虚拟扩展方法
(2)Java 8 Lambda 表达式(语法糖)
https://blog.csdn.net/csdnlijingran/article/details/88855000
-- 双冒号
https://blog.csdn.net/u012784162/article/details/106538516?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-9.compare
-- 对 Stream 中 Map 与 ForEach 做个简单说明
https://blog.csdn.net/weixin_33937913/article/details/89565453
srpingMVC
1.原理架构 注解
(1)用户发送请求至前端控制器DispatcherServlet。
(2)DispatcherServlet收到请求调用HandlerMapping处理器映射器
(3)HandlerMapping生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
(4)DispatcherServlet调用HandlerAdapter处理器适配器
(5) HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
(6)Controller执行完成返回ModelAndView
(7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
(8)DispatcherServlet将ModelAndView传给ViewReslover视图
解析器
(9)ViewReslover解析后返回具体View
(10)DispatcherServlet根据View进行渲染视图
(11)DispatcherServlet响应用户
2.流程
https://www.cnblogs.com/fengquan-blog/p/11161084.html
spring的事务隔离
https://blog.csdn.net/qq_38526573/article/details/87898730
Dubbo&Zookeeper
什么是zookeeper -- 分布式协调服务
https://www.jianshu.com/p/e2c3caa80e8e
-- ZooKeeper面试题(2020最新版)
https://blog.csdn.net/ThinkWon/article/details/104397719?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
-- Kafka 和 ZooKeeper 的分布式消息队列
https://blog.csdn.net/weixin_42117918/article/details/85000071
https://blog.csdn.net/miss1181248983/article/details/90724870?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.nonecase
https://blog.csdn.net/moakun/article/details/82919804?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
spring
1.如何实现事务管理的
2.DI(依赖注入)的几种方式
springboot
-- springboot使用lombok省略set和get方法
https://blog.csdn.net/qq_24095055/article/details/86712042
redis
https://blog.csdn.net/Butterfly_resting/article/details/89668661
数据库
--- 三范式
https://blog.csdn.net/qq_40899182/article/details/81706253
--- oracle 的索引
https://www.cnblogs.com/java-learner/p/9567456.html
https://www.cnblogs.com/jinyuanliu/p/10404646.html
-- 事务隔离
https://baijiahao.baidu.com/s?id=1611918898724887602&wfr=spider&for=pc
https://www.cnblogs.com/Vieat/p/11172784.html
JVM
https://www.cnblogs.com/rong0912/p/12047674.html
高并发
1.高并发:在极短单位时间内,极多个请求同时发起到服务器
2.如何应对高并发
(1)概述
处理方向 | 处理方案 |
---|---|
硬件层面 | 建立缓存机制 |
硬件层面 | 读写分摊(集群) |
硬件层面 | 提高单机硬件性能 |
软件层面 | 良好的查询(分表,分库,索引) |
设计层面 | 负载均衡(https://www.cnblogs.com/tuojunjie/p/6215509.html)(http://www.safebase.cn/article-259719-1.html) |
设计层面 | 尽可能的采用静态的html(CMS内容管理系统,比较特殊的案例) |
设计层面 | 消息队列(将要处理的请求放到队列中,起到削峰和流控的作用) |
(2)消息队列
https://blog.csdn.net/java_fenxiang/article/details/80954905
用户请求数据写入消息队列之后就立即返回给用户了,但是请求数据在后续的业务校验、写数据库等操作中可能失败。因此使用消息队列进行异步处理之后,需要适当修改业务流程进行配合,比如用户在提交订单之后,订单数据写入消息队列,不能立即返回用户订单提交成功,需要在消息队列的订单消费者进程真正处理完该订单之后,甚至出库后,再通过电子邮件或短信通知用户订单成功,以免交易纠纷。这就类似我们平时手机订火车票和电影票(对于不需要实时处理的请求来说,当并发量特别大的时候,可以先在消息队列中作缓存,然后陆续发送给对应的服务去处理)
(2)kafka面试题
https://blog.csdn.net/qq_23160237/article/details/88376561?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2
https://blog.csdn.net/qq_28900249/article/details/90346599
--- 针对高并发系统的解决思路与方案
https://blog.csdn.net/Q3838418/article/details/81988598
MyBatis
https://blog.51cto.com/14442094/2423256
https://www.jianshu.com/p/e8f294f6704b
https://www.cnblogs.com/jiezai/p/11319124.html
-- 缓存机制
https://zhuanlan.zhihu.com/p/106258135
问必答资源
https://www.cnblogs.com/java1024/p/8622195.html
https://blog.csdn.net/weixin_43495390/article/details/86533482
https://blog.csdn.net/eaphyy/article/details/89312277
https://blog.csdn.net/yelvgou9995/article/details/105979827?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
较全面
https://blog.csdn.net/jackfrued/article/details/44921941
https://blog.csdn.net/sinat_35512245/article/details/59056120
https://www.nowcoder.com/discuss/3043?type=2&order=0&pos=5&page=2
https://www.jianshu.com/p/1b2f63a45476
Java 最常见的 200+ 面试题:面试必备
https://blog.csdn.net/sufu1065/article/details/88051083
···
## 传送门
https://blog.csdn.net/weixin_43495390/article/details/104034471