面试八股文

笔试题做题笔记

字符串

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操作系统

前端

六级

8da18c04a17e49678c214e277b123262.jpg

常见的问题

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会导致内存溢出这个事情,了解吗?

并发编程

90c8ec88847040c2a5afef3a1f7bed7f.pngd3e32bdf3d0d4c3f82b18b502aa5e7a4.pngb0d03ba3ce73442ea261583c17898f0b.pnge5d12b2204974d70ae42790e208d66c8.png2cca716ba0a34dbb8e6345a1b74f8244.pngbc933a5f130748f393e8bef8b69619c3.png

spring框架

65cfed473de1479c847ea5d398eac443.png

消息中间件

2d98e83817214bf6a3576db7bdf36c09.pngb3da08ce84c84b78817cd402fb734e1b.png5220316996c347378c5be7fe18f6f289.pngc82087008ad148298572448df296610b.png7e50d48b27fe4410b59766fc0963c1f6.png

java入职必会

java入职必知必会-09 git在工作中的使用_哔哩哔哩_bilibili

开发流程

6de461b038314ff39f45a35f3b65f6ca.png

开发术语

8c5c8c7dde334f1eaa8fbd4bf33d92f7.png

5608897b88fd416388abf9f9f385d828.png

7c2d4fa221e04704b57f293b960c2363.png

一些工具的基本使用

navicate的基本使用

表的导入和导出(excel)

3ad0c6506f944213a98ffd1c372c7cc9.png

IDEA的使用

VMoption的使用

f91f7d33eaf84e22af8a022901de4816.png

e890dd86bcdf4c12a8962ccd97c609c0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值