java面试——问题回溯

背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误。

公司记录

迪普科技

Linux服务器下的top命令
#动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示
cat /proc/meminfo

#快速查看内存占用
free -h

#实时显示各进程的内存使用
ps aux --sort -rss

#相当于win中的资源管理器
top
 
jetty内存优化 
聚集索引和覆盖索引
Sql优化
并发
解决幻读的方式
幻读解决办法(隔离级别调整为序列化,或者是RR时候手动加X锁)
 
Spring中的设计模式
工厂模式、单例模式、代理模式、观察者模式、适配器模式、模板模式、装饰器模式
 
红黑树 

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。

红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

 
Volatile
可以保证原子性和有序性,底层通过lock_前缀,内存屏障
使用场景: 1 状态标记量 2 单例模式的双重检查场景
 
Abstract
ps:对于这个关键字有详细的说明,要牢记

5、关于抽象类的几点说明
(1)抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,也就是可以使用抽象类来充当形参,实际实现类作为实参,也就是多态的应用。
(2)构造函数和静态函数以及final修饰的函数不能使用abstract修饰符。
(3)如果试图创建一个抽象类的实例就会产生编译错误。
(4)如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误。
(5)抽象类中有构造函数。如果抽象类是父类,需要给子类提供实例的初始化。

6、abstract 关键字和哪些关键字不能共存?
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。

 
hashmap存储结构 7 8的区别
7:数组+链表  头插法 先插入再扩容
8:数组+链表+红黑树 尾插法  先扩容再插入
 
Ajax重载
 
Java和c++的区别
以下是我们整理的 Java 和 C/C++ 的 10 条不同之处。
  1. C++ 支持指针,而 Java 没有指针的概念。
  2. C++ 支持多继承,而 Java 不支持多重继承,但允许一个类实现多个接口。
  3. Java 是完全面向对象的语言,并且还取消了 C/C++ 中的结构和联合,使编译程序更加简洁
  4. Java 自动进行无用内存回收操作,不再需要程序员进行手动删除,而 C++ 中必须由程序释放内存资源,这就增加了程序员的负担。
  5. Java 不支持操作符重载,操作符重载则被认为是 C++ 的突出特征。
  6. Java 允许预处理,但不支持预处理器功能,所以为了实现预处理,它提供了引入语句(import),但它与 C++ 预处理器的功能类似。
  7. Java 不支持缺省参数函数,而 C++ 支持 。
  8. C 和 C++ 不支持字符串变量,在 C 和 C++ 程序中使用“Null”终止符代表字符串的结束。在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的
  9. goto 语句是 C 和 C++ 的“遗物”,Java 不提供 goto 语句,虽然 Java 指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读。
  10. Java 不支持 C++ 中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
读写锁
两种存储引擎的区别
内存模型,垃圾回收算法
复制算法、标记整理、标记清楚

 

 

工作中用到哪些设计模式

三十所

读写分离的使用
排序算法时间复杂度
排序算法

新网银行

JVM中各内存区域

敏捷开发原则

初始化顺序 静态块 非静态块 父类的初始化过程:

初始化时候,先从父类静态块初始化,然后子类静态块;非静态块随着对象的初始化而初始化,但是在对象初始化之前

静态块只初始化一次,非静态块在每次对象初始化时候都初始化

 

Hashmaphashtable

 HashMap和Hashtable的详细区别

1、HashMap是非线程安全的,HashTable是线程安全的。

2、HashMap的键和值都允许有null值存在,而HashTable则不行。

3、因为线程安全的问题,HashMap效率比HashTable的要高。
4、Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
    一般现在不建议用HashTable, ①是HashTable是遗留类,内部实现很多没优化和冗余。②即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable。

 

数据库事务的四大特性:原子性 一致性 持久性 隔离性 ACID 

新网银行面试:(面试的很差劲儿 基本没一个回答的满意的)

堆中对象的生命周期

7个阶段:创建阶段、应用阶段、不可视阶段、不可达阶段、可收集阶段、终结阶段、释放阶段

java类生命周期:

一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段

java对象生命周期和类生命周期

 

java如何判断某个对象是否可回收

如何判断对象该死,也就是发生GC时立即被回收?(上面的连接中有详细的流程)

 

 

 

常见被选入根对象集合(GC Roots set)的对象

在虚拟机栈的栈帧中引入的对象;
java类中被static声明的属性;
java类中被final修饰的属性;
native方法引用的对象;
基本数据类型对应的Class对象、一些常驻的异常对象(比如NullPointException);
被同步锁(synchronized关键字)持有的对象;


 

对于无法垃圾回收的对象怎么处理?

 

Dubbo是通过什么方式进行服务注册的

什么时候进行full GC

Full GC触发条件总结以及解决策略

可以发现其实堆内存的Full GC一般都是两个原因引起的,要么是老年代内存过小,要么是老年代连续内存过小。

 

线程池中不能创建线程怎么办

 

jdk各个版本之间的差异

史上最全JAVA全版本特性,看这一篇就够了!【JAVA 1.0 - JAVA 17】

 

数据库索引问题

 

OPPO面试

Dubbo 消费者超时时间的设置

线程池中有哪些东西要进行设置

Redis在项目中的使用

卡夫卡 jeknis

二次面试,问到RocketMq相关知识,如何刷盘,如何持久化

多点生活

常用的消息中间件有哪些
Redis的发布订阅功能和其他消息中间件的不同
怎么解决单实例写的问题
线程城池创建过程
内置锁的底层实现 几种锁
集群压力测试,吞吐量多大
消息中间件是否开源
Wait sleep区别
了解公司
 
项目介绍 太屁了
了解哪些开源项目
 spring boot的底层实现
集群中fair实现
Nginx
突出的亮点 qps
解决流量过大的问题
Redis丢弃策略 解决文件过大问题
服务降级
 
数据库优化方法
Spring cloud

华宇

数据库查询——省市 人口 查出人口超过500万的省份
好好练习下,group by ,haveing函数的使用
 
服务化的理解

 

响应速度慢如何排查
 
集合的区别
 
Inter的大小
(-2)的31次方 ~ (2的31次方) - 1
 
Spring cloud
如何建立索引
自我介绍
如何保证原子性 那个类
丢弃策略
创建线程池
Cas
迪米特法则
 
设计模式举例
容器中的迭代器模式(iterator)、适配器模式(java.util.Arrays#asList() )

中建

String string build
 
学生表 成绩表 查询不存在成绩的学生信息
 
链表用树实现
调用redis存对象时候经过了什么步骤
Mysql隔离级别 深入理解
Aop cglib如何实现的
哪些情况下线程访问同一个变量
Redis集群是怎么实现的 一个数据写集群经过哪些步骤
数据结构之间的区别 什么时候用什么?
Mysql索引,非聚集索引用什么 索引是怎么分类的
Hashmap concurrent
Zookeep如何实现高可用原理

中国移动成都研究院

spring mvc的流程图
事务的隔离级别 相关影响
 
sql语句 查询成绩的范围,开闭区间。
< , >,  >=,<=,between
 
不能用来修饰Interface的修饰符

不能用来修饰Interface的有( )

接口可以使用public和默认的进行修饰。

接口中的方法可以使用public和默认的进行修饰。报错信息:only public & abstract are permitted。

成员变量使用使用public和默认的进行修饰。接口中可以允许成员变量使用static和final进行修饰

阿里

Threadlocal底层实现,注意事项
hashmap null值取值过程
数据库悲观锁乐观锁实现
索引失效
序列化方式
虚拟机参数,oom 查看
Spring的加载过程 static initiate
Spring事务的传播行为
幂等性  分布式锁的实现
Redis一致性哈希
项目中遇到的挑战
Map能存储int类型吗
不能存储基本类型,要存储封装类型
为什么要有迭代器
开闭原则,同意的抽象接口iterator

中电十所

大数据
事物中数据的传递
垃圾回收打印信息 
集群怎么实现事例的监控
 
可重入锁的底层实现
ReentrantLock主要利用CAS+CLH队列(带头结点的双向非循环队列)来实现
synchronized :monitorenter monitorexit。jdk1.6之后对锁进行了5个方面的优化。
 
Java注解的实现
 
集群搭建总是问
Java8的新特性
lambda表达式  注解功能的增强 接口默认实现静态方法 新的时间日期防范 hashmap的底层实现 、java.util.stream 、jvm永久代放在堆上
 
数据库事务的底层实现
 
永久代在哪个区域
永久代就是方法区

美的

Redis锁和zk锁的区别
会话断开时候释放锁
 
数据库中悲观锁和乐观锁的使用,注意,全局索引
 
Dubbo生产消费的过程 有没有看过dubbo的源码
 
线程池oom
 
栅栏
CountDownLatch 用来控制一个线程等待多个线程。await  countDown()计数减1
CyclicBarrier 用来控制多个线程相互等待,只有等多个线程到达时候,这些线程才会继续执行。 

CyclicBarrier 和 CountdownLatch 的一个区别是,CyclicBarrier 的计数器通过调用 reset() 方法可以循环使用,所以它才叫做循环屏障

CyclicBarrier 有两个构造函数,其中 parties 指示计数器的初始值,barrierAction 在所有线程都到达屏障的时候会执行一次

 华西证券

感觉技术上没问多少,主要问项目相关的东西
项目上 介绍的业务
以后每一段工作经历中的积累也要作为面试的内容好好准备

京东

集群中调用链的保证
Lock底层实现
 
B+树的好处
基于范围查找,磁盘代价更低,查询更稳定
Spring源码
数据库同时insert死锁问题
 
事务异常传递
结束线程的方法,shutdown和shutdown的区别
 分表时候后台做了什么逻辑处理

平安科技

String为什么不可变
如何排除线上OOM
jetty和tomcat的区别
jetty相比tomcat是轻量级的servlet引擎,在分布式环境下消耗的资源更少。tomcat很多功能也用不上,jetty可以很方便的基于Handler来进行扩展。
 
部署工具为什么不用spring boot
如果对数据库中的男女字段建立索引,会怎么样
java中的泛型
dubbo集群中怎么监控节点
nginx服务器添加删除节点需要重启吗
mybatis如何实现分页的
oracle分页的实现原理
集群中如果要减少tps 怎么做
发布订阅模式 怎么确保订阅者收到信息呢
是否了解netty
NIO BIO
 

再面oppo

oppo面试:
网贷技术架构是怎么样的
rocketmq的架构模型是怎么样的
nameserver的作用是啥
nameserver的队列模型是啥
rocketmq是怎么保证消息不丢失的
mq是如何进行数据持久化的
mq是怎么刷盘的

网关系统有没有做双活

reids锁超时问题怎么处理的——锁续期
分库分表逻辑是怎么样的
怎么保证数据不倾斜
数据归档怎么做
实时接口性能优化怎么做的
服务器close-wait时候怎么处理

分库分表怎么做的

共同问题汇总

java 各版本之间的区别,java8的新特性

jdk各个版本之间的差异

微服务框架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实现一个延时队列

Redis 实现延迟队列?深深被折服!!

天翼云

讲讲遇到的技术难题
讲讲dubbo的底层实现
netty在dubbo中是怎么使用的,你对netty的理解
mybatis插件和springboot是如何整合的

 

二面:

聊对方是go和python,有点犹豫减分

聊系统设计 给解决方案

共享屏幕 写树的遍历,没写出来。写二维数组顺时针打印,写出来了。让写四维的,没写出来  说了思路

 

百度

聊项目,业务架构,技术架构,基于项目的技术栈提问
Es如何做查询优化
Mysql查询流程
Mysql常见日志文件及作用
Mq是怎么选型的,有哪些考量
 
配置中心用的什么,配置中心配置热生效的原理
Redis的部署方案是什么,为什么要这样选择
基础:spring生命周期,扩展点
 
HTTP请求的全流程
DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如javascript、css、图片等) –> 浏览器对页面进行渲染呈现给用户
 

个人百度

redis多线程了解吗
自己去实现一个分库分表插件怎么做
redis热点数据是怎么探测的
gc优化过程是怎样的
讲一讲索引的优化规则
高可用方案有哪些,一台应用宕机后怎么让其自动恢复
CAP理论讲讲,dubbo保证满足CAP哪些特征
讲讲zk的认识,zk是如何保证一致性的
项目交付有哪些提升效率的方法

面试体会

最好约在下午面试
面试一定要准点,本来是下午两点的面试 因为迟到半个小时 被安排在四点多
要根据公司具体的工作强度来提薪资,移动和平安科技自己都提的太高了
对于在线笔试,要提前做好准备,考试现场,以及外援。邮储的笔试,晚了十多分才进行,题量大,很多都没有写完。太懊悔了

 

 
 
 

 

 

 

posted @ 2019-03-13 08:10  CS408  阅读(938)  评论(0编辑  收藏  举报