基础
- Java参数传递是值传递还是引用传递并举例说明。
- 有哪些常见的Exception,怎么避免空指针异常
- 拆箱跟装箱是什么
- Java中最顶层的父类?
- object里有什么方法
- 类的概念?面向对象的特性?
- java是值传递还是引用传递?在java函数中把对象传入到参数,在函数中可以修改对象的属性,为什么(记不得是问为什么还是问怎么做的)?
- 抽象类和接口区别及应用场景。
- BIO、NIO、AIO
- i++和i=i+1的区别(我只说了赋值顺序不同,后面面试官提醒后面的形式能强转类型前面的那种不能)
集合
- HashMap和HashTable的区别
- 什么是rehash?重新哈希(hashmap)
- JAVA中有哪些集合,ArrayList和LinkedList的区别?
- HashMap用过吗?底层怎么实现的(1.7和1.8)?线程安全吗?不安全用什么?
- ConcurrentHashMap怎么实现线程安全(1.7和1.8),和HashTable的区别?
sql
- 我看你学过SQL,那你讲讲sql有哪些语句?那你说一下select怎么查询?那sql后跟的属性还有哪些?
- 一个表有姓名、年龄、班级,成绩,查询班级中最高成绩、中间成绩、最低成绩,然后按照最高成绩倒序排列
- 高并发访问数据库怎么负载均衡
- 数据库索引
- 对数据库三范式的理解,并举例实际的例子说明为什么不满足
- MySQL中有一张表,id和name,name有很多重复行,怎么去除重复的数据?
- 怎么防止SQL注入,举一个SQL注入的实例
- 数据库怎么防止死锁
- 客户端用sql查询得到结果,经历哪些过程,数据库引擎怎么处理
- sql查询慢怎么排查,什么情况下会设置了索引但又不走索引
- MySQL优化说一下你的理解
- 存储引擎的隔离级别
框架
- springboot核心注解
- spring框架特点
- 数据库连接池
- 讲一下SpringMVC的理解
- springmvc流程
- SpringMVC有几种注入方式
- SpringMVC的生命周期?
- SpringCloud用过吗?怎么搭建一个微服务系统?
- JDBC跟数据库的交互过程
- sping的IOC、AOP原理说一下,AOP基于JDK动态代理实现和CgLib的实现的区别,CgLib具体怎么用
- sping事务的几种实现方式、xml和注解同时配置哪个生效
- mybatis里面#和$的区别
- bean的生命周期
一些微服务问题的总结和作者的答案:
作者:12301928hoiefa
链接:https://www.nowcoder.com/discuss/382073
来源:牛客网
微服务:
1)常用的组件
我就说了注册中心(eureka,zookeeper,nacos),配置中心(springcloud config apollo nacos),服务网关(zuul gateway)
2)服务通信方式
http——fegin rpc
3)rpc调用原理
就说了下客户端从注册中心获取到服务端的地址,然后通过动态代理把要调用的方法信息序列化发送到对应的服务端,服务端反序列化后执行对应的方法把结果返回给客户端,具体可以上网搜一下
4)eureka服务注册一般需要多久
有一个30秒的心跳机制,大概1分钟左右吧(没答到核心)其实这里要结合他的三级缓存和心跳机制来说,具体介绍—— https://blog.csdn.net/weixin_34345560/article/details/88723331
JVM
- 讲一下对JVM的理解
- JVM的内存模型,各个内存的作用
- gc算法
- java虚拟机是怎么工作的
- JVM跟JIT的区别
- 类的加载流程
- 类加载器【最后说到了双亲委派】
- 垃圾收集器
多线程与高并发
- Java多线程 多线程同步
- 进程和线程区别
- Java有哪些锁?这些锁的区别
- 讲一下Java的进程
- 线程的生命周期
- 创建线程有几种方式?
- 线程安全问题,如果是分布式的情况呢,分布式锁原理
- 实现callable和runnable的区别,get方法是否阻塞?
- 多线程时,想让多个任务在某一时刻同时执行怎么实现?(答:cyclicBarrier,以及其实现原理)
- 线程的同步如何实现?synchronized关键字底层实现原理,和ReentrantLock的区别
- Volatile关键字作用以及原理、CAS算法说一下
- 线程池的底层工作原理、饱和策略
- 乐观锁【CAS】
- 保证线程安全方式?
redis
- Redis怎么解决并发
- Redis使用的一些问题
- redis持久化
一些redis问题的总结和作者的答案:
作者:12301928hoiefa
链接:https://www.nowcoder.com/discuss/382073
来源:牛客网
redis:
1)redis是单线程吗?
只是处理客户请求模块是单线程,其他模块也有使用多线程,比如redis6.0以后用多线程来处理网络数据的读写和协议解析
2)redis快的原理是什么?
io多路复用,监听多个文件描述符,通过系统函数比如epoll select等监听相关的文件描述符,当发生事件后回调文件描述符绑定的事件处理器(当然还有基于内存操作那些,当时没答上来)
3)要你设计,你会设计为多线程吗?
看情况,cpu多核时可以设计为多线程,单核时因为线程切换有代价,所以不会设计为多线程。
4)缓存雪崩
建立本地缓存+限流,键过期时间设置分散一些
5)热点数据过多redis撑不住怎么办
当时回答的不是很好,只是说建立集群,其实如果数据不重要的话,可以配置数据淘汰策略。
计算机网络
- 关闭浏览器之后重新输入url后,还会保存登录信息吗
- cookie和session的区别
项目或场景题
- 登录时输入用户名和密码的时候怎么进行加密
- 介绍项目开发流程,讲了2分半钟左右
- 做java项目前做了哪些准备
- 介绍项目,说了下遇到的难点
- 哪些项目对你的成长比较大,具体哪方面
- 如果客户买的东西加入购物车 但是 点按钮没响应 客户把这个问题反应给你 你首先怎么做 然后怎么做
有的没的
- 学习Java多久了?
- 你对Java有什么看法,你觉得Java语言比其他语言的优点在哪?
- 实习时候团队合作问题。团队合作出现分歧应该怎么处理?
- 有合作解决过哪些问题
- 介绍一下你的实习或者项目
- 项目中你是怎么进行统筹规划的
- 问平时如何学习java新技术的?
- 现在博客充斥着转载的文章,你是如何分辨并且化为己用的?请结合项目回答。
- 学了哪些计算机基础课
- 平时如何学习的,看了什么书