java面试——问题回溯
背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误。
公司记录
迪普科技
#动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示 cat /proc/meminfo #快速查看内存占用 free -h #实时显示各进程的内存使用 ps aux --sort -rss #相当于win中的资源管理器 top
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
5、关于抽象类的几点说明
(1)抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,也就是可以使用抽象类来充当形参,实际实现类作为实参,也就是多态的应用。
(2)构造函数和静态函数以及final修饰的函数不能使用abstract修饰符。
(3)如果试图创建一个抽象类的实例就会产生编译错误。
(4)如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误。
(5)抽象类中有构造函数。如果抽象类是父类,需要给子类提供实例的初始化。
6、abstract 关键字和哪些关键字不能共存?
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。
- C++ 支持指针,而 Java 没有指针的概念。
- C++ 支持多继承,而 Java 不支持多重继承,但允许一个类实现多个接口。
- Java 是完全面向对象的语言,并且还取消了 C/C++ 中的结构和联合,使编译程序更加简洁
- Java 自动进行无用内存回收操作,不再需要程序员进行手动删除,而 C++ 中必须由程序释放内存资源,这就增加了程序员的负担。
- Java 不支持操作符重载,操作符重载则被认为是 C++ 的突出特征。
- Java 允许预处理,但不支持预处理器功能,所以为了实现预处理,它提供了引入语句(import),但它与 C++ 预处理器的功能类似。
- Java 不支持缺省参数函数,而 C++ 支持 。
- C 和 C++ 不支持字符串变量,在 C 和 C++ 程序中使用“Null”终止符代表字符串的结束。在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的
- goto 语句是 C 和 C++ 的“遗物”,Java 不提供 goto 语句,虽然 Java 指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读。
- Java 不支持 C++ 中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
三十所
新网银行
JVM中各内存区域
敏捷开发原则
初始化顺序 静态块 非静态块 父类的初始化过程:
初始化时候,先从父类静态块初始化,然后子类静态块;非静态块随着对象的初始化而初始化,但是在对象初始化之前
静态块只初始化一次,非静态块在每次对象初始化时候都初始化
Hashmap和hashtable
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
数据库事务的四大特性:原子性 一致性 持久性 隔离性 ACID。
新网银行面试:(面试的很差劲儿 基本没一个回答的满意的)
堆中对象的生命周期
7个阶段:创建阶段、应用阶段、不可视阶段、不可达阶段、可收集阶段、终结阶段、释放阶段
java类生命周期:
一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段
如何判断对象该死,也就是发生GC时立即被回收?(上面的连接中有详细的流程)
常见被选入根对象集合(GC Roots set)的对象
在虚拟机栈的栈帧中引入的对象;
java类中被static声明的属性;
java类中被final修饰的属性;
native方法引用的对象;
基本数据类型对应的Class对象、一些常驻的异常对象(比如NullPointException);
被同步锁(synchronized关键字)持有的对象;
对于无法垃圾回收的对象怎么处理?
Dubbo是通过什么方式进行服务注册的
什么时候进行full GC
可以发现其实堆内存的Full GC一般都是两个原因引起的,要么是老年代内存过小,要么是老年代连续内存过小。
线程池中不能创建线程怎么办
jdk各个版本之间的差异
史上最全JAVA全版本特性,看这一篇就够了!【JAVA 1.0 - JAVA 17】
数据库索引问题
OPPO面试
Dubbo 消费者超时时间的设置
线程池中有哪些东西要进行设置
Redis在项目中的使用
卡夫卡 jeknis
二次面试,问到RocketMq相关知识,如何刷盘,如何持久化
多点生活
华宇
中建
中国移动成都研究院
接口可以使用public和默认的进行修饰。
接口中的方法可以使用public和默认的进行修饰。报错信息:only public & abstract are permitted。
成员变量使用使用public和默认的进行修饰。接口中可以允许成员变量使用static和final进行修饰
阿里
中电十所
美的
CyclicBarrier 和 CountdownLatch 的一个区别是,CyclicBarrier 的计数器通过调用 reset() 方法可以循环使用,所以它才叫做循环屏障。
CyclicBarrier 有两个构造函数,其中 parties 指示计数器的初始值,barrierAction 在所有线程都到达屏障的时候会执行一次。
华西证券
项目上 介绍的业务
以后每一段工作经历中的积累也要作为面试的内容好好准备
京东
平安科技
再面oppo
oppo面试:
网贷技术架构是怎么样的
rocketmq的架构模型是怎么样的
nameserver的作用是啥
nameserver的队列模型是啥
rocketmq是怎么保证消息不丢失的
mq是如何进行数据持久化的
mq是怎么刷盘的
网关系统有没有做双活
reids锁超时问题怎么处理的——锁续期
分库分表逻辑是怎么样的
怎么保证数据不倾斜
数据归档怎么做
实时接口性能优化怎么做的
服务器close-wait时候怎么处理
分库分表怎么做的
共同问题汇总
java 各版本之间的区别,java8的新特性
微服务框架psring cloud
虚拟机参数 oom排查
spring 的生命周期
dubbo服务和注册的源码实现过程
dubbo redis集群 elk相关
平安科技
dubbo问的很深,层次、协议、同步和异步
mq实现
邮储科技
先是在网上申请提交简历,到时间在线笔试,考了很多行测题,专业题目不是很多。
面完感觉这么基础的题都没答上来。准备太不充分了
笔试后收到一面的面试通知,视频面试。两个面试官,两个候选者。每个人15分钟,这时候的自我介绍要注重项目和技术栈。
问了三个问题
事务失效的场景
数据库主从复制如何实现
binlog
java的垃圾回收机制
一面后一周左右二面,现场面:
上午一共分两批 20个人参加面试 每次一个人对6个面试官。从九点半 到下午一点,自己最后一个
只有一个人提问,让2分钟自我介绍、离职原因、职业规划,这块讲的太啰嗦,还没说完就被打断。
然后就问期望薪资,目前薪资,问了一个开放题目,和同事在群里有争吵怎么处理?
自我感觉10分钟及出来了,其它面试官也没问问题,不是太好
中移杭研
线上有哪些oom问题
业务的技术架构是什么
做过哪些jvm优化
docker容器 k8s
zk和卡夫卡的区别和联系
线程池如何使用的
redis中rdb和aof
龙哥组织面试
currenthashmap读加锁
线程池拒绝策略 队列
扩容提高效率 红黑树数据结构 跳表
网站突然流量暴增
springmvc 从发起到ioc容器内部的处理过程
spring bean注入循环依赖
mybatis三级缓存 插件执行原理
mapper和接口方法怎么对应上去的
接口突然没有响应怎么处理
民生科技
分布式事务
举例jvm调优过程
招银网络
mq实际的使用场景
mq怎么保证消息不丢失的
分布式事务如何实现的
微服务设计怎么进行功能划分
数据库性能优化有哪些,举例说明
线程池的参数根据什么设计的
接口设计要考虑哪些准则-回答不好,感觉回答接口设计六大原则好些
单一职责、开闭、依赖倒置(ioc),接口隔离(接口小,高内聚),里式替换(用基类的地方都能使用子类)、迪米特法则(知道的尽可能少)
手写单例,多线程证明其安全
二面
配置文件热部署是怎么实现的
先说答案:Apollo没有调用Spring提供的@RefreshScope方式,对Bean进行热更新,而是,通过反射去更新Bean的.
Apollo配置中心动态生效机制,是基于Http长轮询请求和Spring扩展机制实现的,在Spring容器启动过程中,Apollo通过自定义的BeanPostProcessor和BeanFactoryPostProcessor將参数中包含${…}占位符和@Value注解的Bean注册到Apollo框架中定义的注册表中。然后通过Http长轮询不断的去获取服务端的配置信息,一旦配置发生变化,Apollo会根据变化的配置的Key找到对应的Bean,然后修改Bean的属性,从而实现了配置动态生效的特性。
Apollo配置中心动态生效实现原理
https://www.lixin.help/2021/07/16/Apollo-AutoUpdateConfigChangeListener.html
导入100万数据 怎么从客户感受和性能优化上去实现
springboot配置文件是怎么加载的
系统调用链路上哪些地方可能会出现性能拼接,怎么分析
你们系统里面的有分布式事务场景吗?怎么解决的,常见的分布式事务方案有哪些
spring事务失效的场
成都农商行
信贷系统如何降低不良率?——风控识别
是否了解网贷和信贷的区别?——不了解
日均贷款规模和数据量是多大?——不了解
风控系统如何做风险控制?——数据聚合,规则制定
行里是怎么制定风控规则的——不了解
贷后管理怎么做的?——不了解
对于线下贷款是否了解,抵押、担保?
现金贷对公和对私的差异点有哪些?——只说了个对客主体,和虚拟的对公账户
针对简历中的数字化、智能化网贷提问?——没感觉到智能化在哪里
reids的部署方式有哪些?——单节点、主从、哨兵、集群
联想电商(同事)
1.项目中比较有挑战的技术难点解决经历
2.zk是怎么实现高可用的
3.rocketmq和kafka的区别
4.redis持久化rdb和aof的实现过程
5.应用宕机分析过程
6.你熟悉的源码实现描述
7.mysql的mvcc实现原理,几种锁
8.rpc注册发现过程
9.英语水平
兴业数金
卡夫卡为什么处理速度快
卡夫卡的日志格式是怎么样的
卡夫卡中的日志索引是怎么样的?
卡夫卡的consumer和partion是怎么设置的
怎么保证消息不丢失
怎么保证消息不重复
怎么保证消息处理的一致性
redis数据结构
zset在插入数据的时候数据如何变更的
怎么用redeis实现一个延时队列
天翼云
讲讲遇到的技术难题
讲讲dubbo的底层实现
netty在dubbo中是怎么使用的,你对netty的理解
mybatis插件和springboot是如何整合的
二面:
聊对方是go和python,有点犹豫减分
聊系统设计 给解决方案
共享屏幕 写树的遍历,没写出来。写二维数组顺时针打印,写出来了。让写四维的,没写出来 说了思路
百度
个人百度
redis多线程了解吗
自己去实现一个分库分表插件怎么做
redis热点数据是怎么探测的
gc优化过程是怎样的
讲一讲索引的优化规则
高可用方案有哪些,一台应用宕机后怎么让其自动恢复
CAP理论讲讲,dubbo保证满足CAP哪些特征
讲讲zk的认识,zk是如何保证一致性的
项目交付有哪些提升效率的方法
面试体会