笔试题做题笔记
字符串
java基础
堆
数组
树
串
栈
/**
* 将中缀表达式转换为后缀表达式
* @param s 中缀表达式
* @return String字符串 后缀表达式
*/
private String postfix(String s){
// 后缀表达式
StringBuilder sb = new StringBuilder();
Stack<Character> ops = new Stack<>();
int i = 0;
while(i < s.length()){
char c = s.charAt(i++);
if (c == '(' || c == '+' || c == '-' || c == '*'){
// 加一个空格是为了将操作数之间隔开
sb.append(" ");
pushOP(sb,c,ops);
continue;
}
if (c == ')'){
// 弹出操作符直到(
while(ops.peek() != '('){
sb.append(ops.pop());
}
ops.pop();
continue;
}
sb.append(c);
}
// 弹出栈中元素
while(!ops.isEmpty()){
sb.append(ops.pop());
}
return sb.toString();
}
private void pushOP(StringBuilder sb,char op,Stack<Character> ops){
// 栈空,或者栈顶元素为(,操作符直接放入栈中
if (ops.isEmpty() || ops.peek() == '(' || op == '('){
ops.add(op);
return;
}
char c = ops.peek();
// 栈顶操作符的优先级低于当前操作符,直接压入栈中
if (c != '*' && op == '*'){
ops.add(op);
return;
}
// 否则,弹出栈顶元素,继续比较
c = ops.pop();
sb.append(c);
pushOP(sb,op,ops);
}
排序和查找
计算机网络
操作系统和计算机组成
数据库
设计模式
编译原理和计算机组成
编程题
linux操作系统
前端
六级
常见的问题
spring框架
Spring框架中的单例bean是线程安全的吗?
什么是AOP?你们项目中有没有使用到AOP?
Spring中的事务是如何实现的?
Spring中事务失效的场景有哪些?
Spring的bean的生命周期?
Spring中的循环依赖(也叫循环引用)?
SpringMVC的执行流程?
Springboot自动配置原理?
Spring框架常见注解(Spring、Springboot、Springmvc)?
mybatis框架
MyBatis执行流程
Mybatis是否支持延迟加载?
Mybatis的一级、二级缓存用过吗?
java基础
1、你是怎样理解OOP面向对象 ?
2、重载与重写区别?
3、接口与抽象类的区别
4、深拷贝与浅拷贝的理解
5、sleep和wait区别
6、什么是自动拆装箱 int和Integer有什么区别
7、==和equals区别
8、String能被继承吗 为什么用final修饰
9、String buffer和String builder区别
10、final、finally、finalize
11、Object中有哪些方法
12、说一下集合体系
13、ArrarList和LinkedList区别
14、HashMap底层是 数组+链表+红黑树,为什么要用这几类结构
15、HashMap和HashTable区别
16、线程的创建方式
17、线程的状态转换有什么(生命周期)
18、Java中有几种类型的流
19、请写出你最常见的5个RuntimeException
20、谈谈你对反射的理解
21、什么是 java 序列化,如何实现 java 序列化
22、Http 常见的状态码
23、GET 和POST 的区别
24、Cookie 和Session 的区别、
java高级
1、HashMap底层源码
2、JVM内存分哪几个区,每个区的作用是什么
3、Java中垃圾收集的方法有哪些
4、如何判断一个对象是否存活(或者GC对象的判定方法)
5、什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查
6、什么是线程池,线程池有哪些(创建)
7、为什么要使用线程池
8、线程池底层工作原理
9、ThreadPoolExecutor对象有哪些参数 怎么设定核心线程数和最大线程数 拒绝策略有哪些
10、常见线程安全的并发容器有哪些
11、Atomic原子类了解多少 原理是什么
12、synchronized底层实现是什么 lock底层是什么 有什么区别
13、了解ConcurrentHashMap吗 为什么性能比HashTable高,说下原理
14、ConcurrentHashMap底层原理
15、了解volatile关键字不
16、synchronized和volatile有什么区别
17、Java类加载过程
18、什么是类加载器,类加载器有哪些
19、简述java内存分配与回收策略以及Minor GC和Major GC(full GC)
20、如何查看java死锁
21、Java死锁如何避免
常见集合
说一说Java提供的常见集合?(画一下集合结构图)
ArrayList底层是如何实现的?
ArrayList list=new ArrayList(10)中的list扩容几次
如何实现数组和List之间的转换
ArrayList 和 LinkedList 的区别是什么?
刚才你说了ArrayList 和 LinkedList 不是线程安全的,你们在项目中是如何解决这个的线程安全问题的?
说一下HashMap的实现原理?
HashMap的jdk1.7和jdk1.8有什么区别
好的,你能说下HashMap的put方法的具体流程吗?
好的,刚才你多次介绍了hsahmap的扩容,能讲一讲HashMap的扩容机制吗?
好的,刚才你说的通过hash计算后找到数组的下标,是如何找到的呢,你了解hashMap的寻址算法吗?
为何HashMap的数组长度一定是2的次幂?
好的,我看你对hashmap了解的挺深入的,你知道hashmap在1.7情况下的多线程死循环问题吗?
好的,hashmap是线程安全的吗?
HashSet与HashMap的区别?
HashTable与HashMap的区别
并发编程
聊一下并行和并发有什么区别?
说一下线程和进程的区别?
如果在java中创建线程有哪些方式?
线程包括哪些状态,状态之间是如何变化的?
嗯,好的,刚才你说的线程中的 wait 和 sleep方法有什么不同呢?
我现在举一个场景,你来分析一下怎么做,新建 T1、T2、T3 三个线程,如何保证它们按顺序执行?
在我们使用线程的过程中,有两个方法。线程的 run()和 start()有什么区别?
那如何停止一个正在运行的线程呢?
讲一下synchronized关键字的底层原理?
好的,你能具体说下Monitor 吗?
好的,那关于synchronized 的锁升级的情况了解吗?
好的,刚才你说了synchronized它在高并发量的情况下,性能不高,在项目该如何控制使用锁呢?
嗯,那你说下ReentrantLock的使用方式和底层原理?
好的,刚才你说了CAS和AQS,你能介绍一下吗?
synchronized和Lock有什么区别 ?
死锁产生的条件是什么?
请谈谈你对 volatile 的理解
那你能聊一下ConcurrentHashMap的原理吗?
线程池的种类有哪些?
线程池的核心参数有哪些?
如何确定核心线程池呢?
线程池的执行原理知道吗?
为什么不建议使用Executors创建线程池呢?
如果控制某一个方法允许并发访问线程的数量?
好的,那该如何保证Java程序在多线程的情况下执行安全呢?
你在项目中哪里用了多线程?
谈谈你对ThreadLocal的理解
好的,那你知道ThreadLocal的底层原理实现吗?
好的,那关于ThreadLocal会导致内存溢出这个事情,了解吗?
并发编程
spring框架
消息中间件
java入职必会
java入职必知必会-09 git在工作中的使用_哔哩哔哩_bilibili
开发流程
开发术语
一些工具的基本使用
navicate的基本使用
表的导入和导出(excel)
IDEA的使用
VMoption的使用