Java集合说一说吧set ,list,map都问了一遍
TreeSet和HashSet区别
hashmap和concurrenthashmap
线程池用过没,线程池的参数什么意思,每个都问了一遍
核心线程数,最大线程数,等待时间,拒绝策略
拒绝策略说一说
synchroBlockQueue 到底可以存几个
锁用过没,l
锁的什么方法你用过
lock和tryLock区别
lock的公平锁和非公平锁的怎么实现的(源码级别),不限于概念
类加载机制,不是类加载几个过程
双亲委派机制
如果多个类加载器加载同一个类,会出现什么情况
tomcat的加载过程
我说了不了解,当时就应该问是不是init doPostxx
反正不是双亲委派
spring的生命周期,不是bean
没有get到点上,不知道
AOP
ASM怎么实现cglib
mybatis的插件用过没,
项目,
背景:暂存数据,每一次把用户填写的数据暂存到数据库,暂存字段,0暂存,1正式存
如果实现a用户暂存数据1,b用户暂存数据2,实现a下次只能看见数据1,
给car表加一个操作人字段,每次判断
car表怎么设计的,
id,车牌号,xxx,xx,暂存标记
car表主键是什么
主键id
主键id有什么规则吗?
自增长
如果一个车牌号重复了,添加的时候怎么处理的
每次填入的时候,都会在数据库里查询一下,判断是否有
如果4个人同时填入车牌号为888的车,怎么处理这个问题
叭叭叭半天,给添加这个操作加锁,给判断重复车牌号方法加锁,
加锁为消化资源,你考虑一下在数据库进行操作吧
叭叭了隔离级别,说了mysql默认隔离级别(可重复读)
此时感觉不对了,没有get到点上了
隔离级别是解决什么问题的啊
并发的时候问题,叭叭脏读等问题,
隔离级别什么时候才出来啊?
不知道
这个点没有回答好
数据库索引,索引类别
唯一索引,聚簇索引,非聚簇索引
聚集索引和非聚聚索引
二叉树和B+树的区别
叭叭半天,没有get到点上
- B+树所有数据都在叶子节点,每次查找时间稳定
- 叶子节点都有指向下一个叶子节点的指针,范围查找比较方便
- B+数的多叉平衡树
那如果把二叉树弄成,所有数据都存在叶子节点呢
二叉树,如果删除的话,可能会变成线性树,时间复杂度变高
那如果平衡二叉树呢
叭叭了,记得好像磁盘存储是用的b+树结构,索引是存在磁盘上的,用B+树会减少IO操作
怎么减少IO操作的
完全懵逼了,
磁盘上所有文件都是B+树存储吗?
文件夹的文件吧
磁盘上怎么存储这些数据的
你了解什么文件格式
elf,a.out
Linux操作系统了解过吗
Linux不太了解过,用过Linux命令,进程同步
Linux命令用过哪些
cd,grep,pwd,mv,管道符,ps
Linux根目录下有哪些文件夹
etc,bin,我好像记得是,可能记不太清楚了
手撕翻转树,递归+递推
手撕最小路径和
开源项目了解什么
SpringBoot如何加载,源码
学习源码如何深入学习的
叭叭叭ArrayList和LinkedList
如果去了解spring的启动过程,你怎么去了解
断点调试?
tomcat启动的流程,要加载什么资源
项目中有哪些收获
项目中负责哪些点,技术方向吧
为什么用mvc架构
面试官:其实这个mvc架构知识点还是很深的,要做好还是很难的
项目里Spring的事务是怎么管理的
在方法上加注解
那为什么加注解可以实现,这个加载机制是怎么实现的,源码级别
为什么这个注解可以实现事务
那这个事务和数据库的事务有什么关联
acid,事务隔离级别
那你们当时项目选技术是怎么思考,比如mybatis用的什么连接池
用的c3p0
那你知道有其他的连接池,各自有什么区别
c3p0、dbcp、druid三大连接池对比 - wawa3338的博客 - CSDN博客
https://blog.csdn.net/wawa3338/article/details/81380662c3p0,dbcp与druid 三大连接池的区别 - 泡面之家 - CSDN博客
https://blog.csdn.net/qq_34359363/article/details/72763491druid的功能强大、扩展好,
druid c3p0 dbcp
那你感觉连接池的功能都有什么
- 资源重用
- 更快的系统响应速度
- 新的资源分配手段
- 统一的连接管理,避免数据库连接泄漏
项目大概几个人,开发的人,源码包大小多少
juc看过哪些,说AQS的机制
Lock如果给线程分配锁的
叭叭ReentrantLock
公平锁和非公平锁的区别,源码级别
面试官补充:非公平锁就是抢占式的嘛
队列呢,了解什么
ArrayBlockQueue,LinkedBlockQueue
各个队列使用场景
queue里面都有什么方法
offer,add,put
各个方法仔细讲讲,都会出现什么情况,添加的方法有什么,都有什么不同出队列呢,都有什么,跟offer对应的
jvm看过什么、jvm常用命令
jstat的参数,比如看一个线程的回收情况,怎么看、其他的命令呢
动手去编译JDK源码
JVM的类加载流程,到解析到字节码
如何去验证版本的冲突的,比如jdk1.6到jdk1.7
初始化去怎么做的
实际运用中,ClassLoader都有了解什么
如何实现一个动态加载、实现哪些方法
实现ClassLoader这个类
首先加载这个字节码的字符流,然后有个loader方法吧,记不太清楚了
如何获取当前的ClassLoader
getClassLoader方法
那可以保持建立多个ClassLoader吗?
给他扯到了不同ClassLoader加载一个clas出来的类不一样
为什么加载器加载出来的类不一样
不同加载器加载出来的类不一样,因为加载器不同啊
面试官补充:因为每个加载器都有自己的隔离机制
jvm内存模型
多线程如何实现主存同步的
缓存一致性扯一扯,Java内存模型
那通过什么指令去实现其他工作内存无效的
voliate
Java里怎么实现缓存一致性的
volatile、synchronized、lock、信号量、wait/notify
面试官补充:信号量也是加锁实现的
jvm的锁优化有什么
说了synchronized,
那还有其他编译器的锁优化吗,比如锁粗化
锁消除、、、、、
网络编程知道吗
创建socket的过程
从server端开始说吧,几个步骤
accept操作之后,然后呢
接收客户端传过来的信息吧,
怎么解析这个信息呢,输出到什么流里呢
互联网这块网络编程用的也挺多的,比如rpc框架什么的
Java里的IO这块你了解吗,区别
BIO、NIO、AIO的对应类实现了解吗
shell命令
进程通信方式
Linux调度方式有什么
Linux的缓存有几级
jdbc连接mysql的几个步骤、为什么要加载驱动呢,原理是什么、PreparedStatement和Statement区别、返回结果如何查询
准备 private static final URL、、、 也可以用properties从文件中读取。load()、
1、首先注册驱动啊?怎么注册?反射啊,Class.forName("xx.xx.xx.Driver");底层怎么实现的?静态代码,DriverManager.registerDriver?启动的时候,会自动调用静态代码块的内容。
2、接下来就是获取连接啊,怎么连接?远程连接(三次握手操作),连接放哪里?作为资源必须放池子里。这样能提高性能。常见的连接池有DBCP,C3P0,传说中最安全,性能最好的Druid(国产),而且还能监控。
3、你总的有SQL语句吧,之后就是Statement编译那。这里会出现SQL注入的安全问题。在语句后面加"1=1"成立。所以我们采用预编译的方式,PreparedStatement。可以防止这种问题的出现。
4、查完之后获取结果集。rs.getString().
5、头疼的来了,释放资源。各种 if(xx != nu) {try{ xx.close();}catch{}} 不用担心JDK8 出来一个新特性,可以放在try-withresource中。还有各种异常可以采用通道的形式 XxxException | XxxException
6、各种异常需要你放到一个try{}catch{}中,出问题你也不知道问题在哪里?
麻烦吗?不用担心,我们可以封装成一个工具类,需要的时候调用工具类.getConnection();
还是麻烦啊,可以用Spring框架为我们集成提供了jdbcTemplate,HibernaterTemplate。用模板代码消除了大量的样板代码。
遍历结果集,叭叭
说说ArrayList的源码各种方法吧,add,remove一系列方法
MySQL的聚簇索引
知道SQL注入吗、Java里怎么防止的呢
Redis和数据库的一致性
了解过什么开源的东西吗
Spring
那说说AOP吧
主要就是项目问的多
排好序的数组里找到比target小的下标,
二分查找
中间件会什么
我不会
好像还有线程的并发包
剩下的忘记了....
自我介绍
项目中你觉得自己做的比较好的地方在哪里
数据库
数据库索引
洗牌算法
本地文件abc.txt,里面存放了5000万个正整数,每一行一个正整数,正整数取值范围为1-5000万,现要求你找到第300个大的正整数?要求时间复杂度为O(1)
O(1) 我很懵逼了
生产者消费者需要注意什么事项
并发操作
应用层建立可靠机制,快,资源消耗少
自我介绍
面向对象聊聊吧
构造函数能不能重写
Java基本类型
那基本类型的比较用什么进行比较的啊,是否比较
对象比较呢
看这个对象有没有重新hashcode和equals方法吧
对象的比较是用的什么原理比较吗
hashcode了解过吗
简单介绍一下list和set的区别吗
叭叭叭
查找大量数据里是否存在某一数据
用hashset
大数据面试题——如何在大量数据中判断一个数是否存在 - CircleYuan的博客 - CSDN博客
https://blog.csdn.net/kingyuan666/article/details/84583980方法一:分治法
对于大数据相关的算法题,分治法是一个非常好的方法。针对这一题来说,主要思路为:可以根据实际可用内存的情况,确定一个Hash函数,比如:hash(value)%1000,通过这个Hash函数可以把这2.5亿个数字划分到1000个文件中去(a1,a2……,a1000),然后再对待查找的数字使用同样的Hash函数求出Hash值,假设计算出的Hash值为i,如果这个数存在,那么它一定在文件ai中。通过这种方法就可以把题目转化为文件ai中是否存在这个数。那么接下来的求解过程中可以选用的思路计较多,有:
(1)由于划分后的文件比较小了,就可以直接装载到内存中去,可以把文件中所有的数字都保存到hash_set中,然后判断待查找的数字是否存在。
(2)如果这个文件中的数字占用的空间还是太大,那么可以用1相同的方法把这个文件继续划分为更小的文件,然后确定待查找的数字可能存在的文件,然后在相应的文件中继续查找。
优化高效的办法
提示我了list和set
项目
MySQL语法,海量数据分页吧,用什么实现
limit x,x
MySQL常见的引擎,两者区别
查询效率来说,哪个快一点
MyISAM吧
是的,MyISAM虽然是表级锁,但是表的简单,查询效率比InnoDB快
MySQL用的什么版本,5.5和5.7版本的一个区别
5.7多了一个明显的数据类型json类型
平常用到json吗?
自我介绍
分代收集算法
什么参数能够调整新生代的比例?
如何一个程序频繁的发生Full GC,有什么办法改善这个情况?
标记-清除和标记整理区别?
程序发生内存泄漏,你会怎么去查这个问题?
讲一下hashmap的数据结构吧
ConcurrentHashMap
Java如何实现线程池
Java实现线程同步有哪些方式?
!!!互斥量、读写锁、自旋锁、条件变量
原子类你用过吗?
进程和线程调度算法?
讲讲数据库吧,数据库引擎
select count(*) form 表 用哪个引擎快一点
组合索引是a,b,select 语句 where b = 1 and c = 2
like 走索引吗
邪恶一笑,where a = 1 ,b = 2 OR b =3 走索引吧
如何查看慢查询
如何查看SQL语句的每一个查询计划,就是每一步消化多少毫秒
你自己还可以讲一下其他SQL语句优化
Redis基本数据类型
发现服务器上TIMEWAIT(我听成摊位)状态的TCP过多是什么问题?
说说三次握手的状态吧
然后呢?
!!!!!!复盘发现TIME WAIT是四次握手里的!!!!!!
说说项目吧,不用太详细,讲一个难点吧
做这个项目有什么提高呢
你问我吧
bigo 9.12 二面,手撕了2个算法,基本撕出来了,问了一个线程池的问题,没有回答出来,没有get到点上,问了我单例模式,我说单例模式就产生一个对象,安全,给了我一个情景题,在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗,我说不知道了,视频面了47分钟,直接说的,今天就到这吧,感谢你面试我公司,没有让我问问题
项目
讲讲代理,代理细分,Java里的代理
AOP的代理,ASM的实现没有说明白
JDK的动态代理怎么实现
代理类handlr
动态代理底层怎么实现
mybatis的缓存
什么时候才能命中二级缓存,什么时候才能存到二级缓存里
mybatis的接口和xml交互,用到了代理了吗?
Spring的事务传播机制
JVM常用的垃圾回收器,
CMS和G1叭叭叭
CMS的优缺点
CMS回收几个阶段是只有自己的线程吗?还是多个线程并行
正确应该是
- 初始标记 自己线程
- 并发标记:并发标记线程+用户线程
- 重新标记:重新标记线程
- 并发清理:并发清理线程+用户线程
- 并发重置:重置线程+用户线程
缺点:在并发清理过程中用户线程可能会产生大对象发生full gc,导致csm回收失败
频繁Full GC,如何排查,用到什么工具
类加载机制
双亲委派机制
synchronized和lock区别
synchronized、lock是公平锁还是非公平锁
synchronized的锁升级过程
MySQL常用的引擎区别
MySQL的索引结构
哪些会索引失效
B+树和B树的区别
MySQL常用的事务隔离级别
MySQL事务隔离级别都解决了什么问题
脏读幻读是什么。
不可重复读,MySQL是什么解决的
叭叭了读写锁、意向锁
正确是mvcc
Redis的数据结构
讲跳表,如果插入这个怎么做的,比如插入第一个数据,存到第几层
如果没有数据,放到第一层,
手撕两数之和、判断括号是否合法
OSI七层模型
http报文头,多少位
tcp udp区别
hashmap、concurrenthashmap
线程池
用hashmap去实现Redis,你会怎么实现
说说数据结构和算法吧,做后端的这块可能薄弱一点吧,就不问你了
未来职业规划吧
面试官给我聊了很多未来的各种方向,叭叭叭
期望薪资吧
给我聊各种很有用的人生
后面记不住了,因为是线下面得,忘记录音了
面试感受:这个面试官真的很nice,问的东西也是根据简历来问的,然后也非常和蔼,面完之后还给我教了很多经验,在纸上给我画了画,写了写,真的很不错!!!!
说说项目吧
你这项目也不行啊,感觉没有什么聊得
那你说一下项目难点和亮点吧
这个也不算项目难点和亮点啊
怎么没有去实习呢
系统频繁卡顿,怎么排除呢
尝试一下JVM调优,Full GC问题
那你说说jvm调优吧
还有一些忘记了
面试感受:!!!!!真的没有体验感,一直被dis,就差面着面着起身就走
项目,
图片那个问题有个热部署了解一下
int和Integer的区别,为什么要有Integer,那为什么又要有int
Integer a = 1000; a++;几次拆箱和装箱
JVM内存划分
查出各科目成绩第一的学生,可能会并列
JDBC
MyBatis的接口和XML文件怎么对应上的
死锁讲讲,然后写一个
讲讲集合吧
阿里有个证书,可以了解一下
找到链表最后一个值,倒数第x个值,
快慢指针思路
快慢思路还可以解决什么问题
判断环,环入口,环长度,找中位数
ipv4对应4个字节,int也对应4个字节,把192.168.1.100转换为int
每个转换为二进制,然后整个字符串就是一个二进制,符号位+31位,进行转换int
海量字符串数据查询次数出现次数最多的字符串,海量是指根本存不下去
一次处理根本不能处理,所以分机器处理。
假设有M太机器,求出每个字符串的字符串Hash值模M的值分配到对应的机器上,对每个机器上的字符串分别求出现次数最多的字符串(使用Map记录就可以),在取M台机器中出现次数最多的。这是我之前学习海量数据处理时经常看到的方法
手撕最长回文子串
暴力写的
字符串数组是否可以成环{[ABC],[CDE],[EFG],[GHA]},成环的最大长度,首尾字符要一样
用的dfs,写的,
正确做法是个图论
逻辑题,3人3鬼过河问题
索引锁机制
唯一索引行锁
查看一条数据,数据不存在,怎么加锁的
间隙锁
Redis为什么那么快
- 在内存
- 数据结构简单
- 单线程的
- 多路复用I/O,非阻塞
分段锁你知道吗
ConcurrentHashMap用的分段锁
ConcurrentHashMap的put源码
线程池怎么理解
聊线程池的池化思想
聊聊项目
ArrayList,线程是否安全,是否有序?
TreeSet和HashSet区别
final关键字
抽象类和接口
jdk1.8新特性
IOC
AOP,用在日志上,Linux上怎么看日志
tail -f
百度(上海)基础平台开发
现场三轮技术面
1.自我介绍。
2.实习项目介绍。
3.java类加载机制、双亲委派机制。
4.Java内存管理、垃圾回收算法、常见的垃圾回收器介绍、Java内存泄漏发生场景及如何避免。
5.红黑树和AVL树的区别。
6.MySQL的索引机制、MyISAM与InnoDB的区别。事务的特性及隔离级别。
7.进程和线程的区别,进程、线程的通信方式有哪些。
8.死锁产生的必要条件,产生死锁的解决措施。
9.讲一下你了解的设计模式。
10.在海量数据中,怎么找出最大的100个数。
11.在浏览器里输入www.baidu.com后发生了什么。
12.tcp和udp的区别,tcp怎么保证可靠性的。
13.http和https的区别,http有哪些常见的状态码,get和post区别,https的加密过程,是对称加密还是非对称加密。
14.算法题:非递归实现二叉树的后序遍历。
15.算法题:给定一个一维数组,求数组中的最长递增子序列。
16.算法题:判断两个链表是否相交,如果相交求交点,分无环和有环多种情况考虑。
17.有什么想问我的。
网易游戏(上海)游戏研发
现场两轮技术面
1.面试前,先是给半小时时间做一道算法题,题目:爬楼梯问题,有N层楼梯,你每次可以爬2层或者3层,打印可以爬完N层楼梯的所有方案。
dfs
2.实习项目介绍。
3.讲一下java的反射机制。
4.介绍一下Java内存管理、垃圾回收算法。
5.HashMap的底层实现、扩容过程,为什么不安全。
6.tcp和udp的区别,怎么使udp变得可靠。
7.网页是多进程还是多线程的。
多线程
8.b树和b+树有什么区别,为什么不用红黑树实现索引机制。
IO 次数太多
9.一个文件中有100万个数据,包含ip地址和对应的实际地址,给出一个ip地址,怎么快速查到对应的实际地址。
10.介绍下堆排序并分析一下时间复杂度,怎么用数组实现一个堆。
11.游戏中有一个装备,1~4级的时候每操作一次,50 %概率升一级,50 %概率级数不变,5~9级的时候每操作一次50 %概率升一级,50 %概率掉一级,求从1级升到9级的期望操作次数。
12.算法题:给定一个一维数组,判断是否能只修改一个元素就成为非递减数组。
13.算法题:一个字符串,每次操作可以在字符串中的任意位置插入一个字符,至少需要操作多少次,可以使字符串变成回文字符串。
14.设计一个斗地主发牌游戏。
15.100层高楼扔鸡蛋问题,给两个鸡蛋,至少需要扔多少次,给出最优解。
16.最近在玩什么游戏,为什么投游戏研发岗,对游戏行业的看法。
17.期望薪资多少。
18.有什么想问我的。
依图科技(上海)后端开发
现场三轮技术面一轮HR面
1.自我介绍
2.实习项目介绍
3.介绍一下简历中提到的其中一篇论文的内容。
4.用过哪些设计模式,手写一下责任链模式。
5.掷一枚硬币,连续两次出现正面的期望。
6.有2个人掷硬币,A先掷B后掷,先掷到正面的人获胜,B获胜的概率。
7.有N个棋子,两个人轮流拿棋子,一次可以选择拿1个或者2个,谁拿到最后一个棋子谁获胜,你先拿,怎么保证你尽量获胜,分情况讨论。
8.算法题:K个有序数组,归并成一个有序数组。
9.算法题:一个M*N的二维数组(M和N都很大),行和列都递增,查询一个元素在数组里是否存在。
10.算法题:给定一个一维数组,输出数组中所有和为0的三元组合。
11.算法题:给定一个二维数组,数组中元素均为0或1,求数组中最多有多少个1相连通。
12.算法题:给定一个一维数组,求数组中等差递增子区间的个数。
13.算法题:给定N个整数对,求整数对能够构成的最长链,例如对于整数对 (a, b) 和 (c, d) ,如果满足 a
14.算法题:给定两个字符串,每次操作可以删除任意一个字符串中的任意一个字符,一共至少需要操作多少次,使得两个字符串一样。
15.认为依图科技是一家怎么样的公司。
16.实习中遇到了哪些难题,怎么解决的。
17.自己的优缺点。
18.毕业前能来公司实习吗。
19.手上有哪些offer,期望薪资。
20.有什么想问我的。