背景
在老东家五年了,总共工作整七年,经历两家公司。2019-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。
准备
撰写简历,每天下班回家 7-12点看视频,刷博客,看面试题。
学习内容:JavaGuide,《某某时间》系列专题,《某某课堂》学习视频。
准备内容:Java 基础,集合,线程池,锁,MySQL索引,事务,Spring等。
2019-10.31 周四
提了离职已经有二十多天了,今天老板签了字,办了离职手续,《某某直聘》上传简历,刷新简历。《某东供应链部门》打电话问了问我的学历是否统招本科,约我明天下午去面试。不过他也算是大厂吧,没有面试经验咋办,心里很忐忑,没关系,开始加油吧!咦,有条消息,我一看是我同学给我发的截图,原来他刷到我的简历了,他说帮我内推,内心还是挺激动的。内推公司:《打车》
2019-11-01 周五
早上五点半爬起来了,开始看视频,刷资料,准备面试,一直到12:00,没吃饭。公司太远了,在亦庄,要两个小时才能到,出了地铁口,映入眼帘的便是他们的大楼。找到部门,给了张面试题。
二面:部门负责人
简单聊聊,介绍团队业务,有什么要问的吗?等待通知。(说好的《打车》内推呢,咋还不给我打电话呀,算了,可能简历没过。)
总结:MySQL事务隔离底层实现细节还要多补充一下,JVM细节在多看看。
接到《某某租房》公司面试邀约。下周一下午面,正好周六日在准备准备。
2019-11-04 周一
坐地铁辗转到了公司大楼。你好,来面试的。
领到一份面试题,来到三楼休息室,一大堆人跟菜市场似的。我擦,竞争压力这么大啊,看了一眼面试题,好多不会的,算了,不做了,走吧。
来都来了,试试呗。开始做题。
经典套路题
一面:一位说话比较轻柔的技术官。
不能
栈空间满
保存
B+ 树索引
面试官对我说:我觉得还OK,你等一下,我们领导开会,让HR通知你改天二面吧。我:好的,启程回家。
2019-11-05 周二
相安无事,帮表弟的朋友扣了我的驾照9分。。。下午去某公司面试,结果面试官没有接到电话,保安也不让我去问,算了,走人吧。
2019-11-06 周三
《某某租房》复试。面试官很年轻,比我大两岁,人家已经是研发经理了,看看我。哎。。。。
下午四面:技术总监
HR谈offer,回家喽。
2019-11-07 周四
《某某优鲜》下午两点,找大楼找了半天。公司好几层,我擦,没见过这阵仗。上楼等一会,没有笔试题。
一面:
二面:
HR:简单聊了一下,为什么五年不离职?你这样的很少见啊。还有一轮部门老大面试,你先回去吧,电话面。
晚上收到通知,周五6点电话面试。
2019-11-08 周五
该来的终于来了,要面对最终BOSS了。不过还好不用坐地铁了,上午看了几个视频,准备了一下,中午12点,洗个澡,收拾收拾。骑车出发,心情很忐忑。骑车到了地方,公司LOGO映入眼帘,两座大楼。给HR打电话,接待,上楼,等了一会,一个年轻的面试官过来了。
RDB 和AOF
会,有持久化动作
纯内存操作,单线程
看使用哪种拒绝策略
Sting 放在常量区, new String放在堆区
二面:(和一面问了好几个重复的问题,害的我又讲了一遍)
JDK 1.8之前是头插,后改为尾插
部门老大面:
HR面:
总结
面试之前确实要多做准备,不过有实战经验的话更佳,怪不得大厂跳大厂较为容易一些。小公司也不要气馁,一些公司不看项目,看你对高并发项目的理解,哪怕自己没做过,有自己的方案也可以。基础必须扎实,不要只背理论,深入了解,了解的越深越好,虽说面试造火箭,工作拧螺丝,你有造火箭的能力还怕拧不好螺丝吗?
面了整整一周,总共四家公司,最终结果自己还是可以接受的。 JVM,MySQL必须掌握,其他基础知识要牢固,并且要用到实战上,要不然学再多也是理论,Linux操作系统要恶补一下,由于自己高并发场景经验较少,这个只能在业务量较大的公司才能学到。
另外,市场上的资料,不管是付费的还是非付费的确实对面试很有帮助,但是如果自己有个好项目搭配的话,更好一些,要不然面试官都没法问。
别问我为什么五年不离职,我也不知道,是好事还是坏事?
整体面下来,感觉自己准备的勉强及格了,但还是不够好,应该能回答的更好的,让我想起了一句话,你本来可以做的更好。所以,告诫自己不要再浪费时间,多学习,多总结。很幸运,再次感谢同学的内推,谢谢你。
去年找日常实习的面经,整理了一下。三面算法没写出来,挂了。
1. 算法题:二分搜索相关
2. 概念题:解释 分布式、微服务、负载均衡、高可用
3. http是有状态还是无状态? TCP是有状态还是无状态?
http 无状态,tcp有状态
4. 客户端禁用cookie怎么办? 你说的实现方式安全吗?
5. SSL,http和https,https是有状态还是无状态?
6. String为什么设计成final不可变? 是怎么实现不可变的?
7. 自己能实现一个不可变的类吗?
8. equals 和 hashcode 为什么要一起重写?如果不重写hashcode会出现什么问题?
9. hashmap插入的时候,哈希冲突解决? 查找的时候,哈希冲突怎么解决?
连地址法,与遍历链表
10. hashset是怎么实现的? hashmap是怎么实现hashset的?
通过hashmap实现
11. 多线程:并发和并行,原子类,CAS操作
12. mysql的索引:B+树底层实现?B树的底层实现?为什么要用B+树而不用B树?
13. 最左前缀匹配具体是怎么实现查找的?最左前缀匹配用了B+树的哪些特性?
14. (a,b,c)联合索引,为什么不能单用(b),而一定要用(a,b)?B+树是怎么实现的?
15. 什么是幻读,不可重复读?这些概念是在事务内还是事务外? 事务内
16. mysql怎么实现可重复读?设置了可重复读隔离级别底层是怎么实现的? (MVCC)
17. 了解MVCC吗?怎么实现的?什么是快照读?快照读能读取到最新的吗?快照读和当前读的区别?
18. synchronized和reentrentlock哪个效率高?
1. 算法:实现一个缓存队列 ,二叉树的镜像
2. 进程和线程的区别?内存管理说一下你的了解。进程调度算法。
3. 为啥B+树最后叶子节点需要用链表相连接? 便于区间查找
4. TCP状态转换图,画一下。
5. 操作系统I/O模型了解吗?epoll模型了解吗?
6. CopyOnWriteArrayList的相关特性?
7. ArrayList遍历的时候能删除元素吗? 删除的时候会报什么异常?
1. 算法题: (1)树的节点最大距离(2)区间覆盖 例 [1 3] [2 5] [3 6]能否覆盖[2 6]
2. Linux相关命令。
3. 手写SQL,join
百度是去年找日常实习的面经,面了两个部门,整理了一下
object.clone() 反序列化, 反射
volatile关键字
便于HashMap的使用
false 比较的是内存地址
必须是2的幂次
length,charAt
迭代器可以
没有
CAS
1. 算法题:六七道,都是剑指offer难度
2. 半小时项目介绍 & 问答
3. 分布式相关:rpc原理、微服务架构
4. 海量数据问题:套路题
5. 计网:传输层、网络层(必须要非常熟,ping的原理,tcp的三次握手、四次挥手、拥塞控制。UDP的不可靠、一对一、一对多)
6. 操作系统:虚拟内存、段式、页式、进程调度算法
7. 数据一致性: 分布式数据一致性、缓存数据一致性
8. Java相关:线程池、HashMap、CopyOnWriteArrayList
9. Redis相关:复制原理、持久化原理
RDB和AOF
10. 杂谈:最近看什么书,实习地点。
1. 算法题:最长不重复字串
2. 半小时钟项目介绍 & 问答
3. 操作系统:Linux的namespace(不会)、进程线程、线程通信方式、进程通信方式
4. 计算机网络:传输层和网络层,因为我项目做了链路层,也讲了一下。
5. Java相关: 线程池
6. 数据库相关: 一条连表查询语句。数据库索引原理
7. 海量数据问题: 套路题
8. 杂谈:介绍了部门业务
1. 应该是大老板面试了,问的都很哲学:技术背景、学习方法、项目介绍
2. 问了一些简单技术问题。主要考察逻辑表达和整体的素质。
2. 杂谈:介绍了部门业务
1. 家庭情况
2. 面腾讯原因,还有面其他公司么
3. 兴趣爱好
4. 业务介绍
5. 口头offer
Java开发岗位。从3.7开始简历面,到4.30收到意向书。流程两个月,阿里终于上岸了。
在3.12之前面了阿里云、蚂蚁、菜鸟、数据产品的各种简历面(全部有录音)。
内推最终投的菜鸟。不得不说,投菜鸟真的需要非常好的心态。。嗯。每一面至少间隔两礼拜以上。。
1. volatile的底层如何实现,怎么就能保住可见性了?
强制线程工作内存的数据失效,需要从主内存再去读数据
2. 三个线程如何实现交替打印ABC
一把锁,三个条件变量
3. 线程池有哪些创建方式和安全性问题
Excuate工厂方法
4. 有哪些线程池的类型
固定大小线程池,无界线程池,缓冲线程池
5. 线程池中LinkedBlockingQueue满了的话,线程会怎么样
开启拒绝策略
6. 线程池的底层原理和实现方法
7. 线程之间的交互方式有哪些?有没有线程交互的封装类 (join)
wait,notify
8. 算法:堆排序、栈实现队列、反转链表
9. Java锁机制,都说一下~
可重入锁和sysconized关键字
10. 除了@ResponseBody,controller层如何标准返回给前端所要的数据类型?你会怎么实现?
11. 异常捕获处理
12. Spring MVC的原理和流程
13. HashMap和ConcurrentHashMap哪个效率更高?为什么?
HashMap
14. Redis的缓存淘汰策略有哪些?
LRU
15. Java内存模型说一下
16. mybatis如何进行类型转换
17. mybatis的xml有什么标签
18. MySQL锁机制
19. 如何修改linux的文件权限
chmod xxx 777
20. jvm的回收算法
21. 你会怎么设计数据库表结构
22. 数据库有哪些索引?
23. 如何防止sql注入
24. 抽象类和接口有什么不同
25. myql间歇锁的实现原理
26. future的底层实现异步原理
27. SpringBoot Starter原理
28. rpc原理
29. 多个服务端上下线怎么感知
30. 缓存和数据一致性,怎么处理。流式计算
31. 多线程讲一下,FutureTask
32. Java和mysql的锁介绍,乐观锁和悲观锁
33. 分布式一致性讲一讲
34. 分布式锁的实现方式,zk实现和redis实现哪个比较好
35. 多点登陆怎么实现
36. 把乐观锁加在数据库上面,怎么实现
37. 项目介绍
38. 降级处理hystrix了解过么
39. 两次点击,怎么防止重复下订单
40. ioc原理详细讲讲,源码看过么
41. 静态代理和动态代理的区别
42. JUC说说你知道的东西
43. B+树的叶子节点
1. Java内存模型
2. full gc怎么触发
3. gc算法
4. 高吞吐量的话用哪种gc算法
5. ConcurrentHashMap和HashMap
6. JDK8的stream的操作
7. volatile原理
8. 有参与过开源的项目
9. 项目介绍
10. 线程池原理,拒绝策略,核心线程数
11. 1亿个手机号码,判断重复
12. 是否有写过小工具
13. 单元测试介绍一下,多模块依赖怎么单元测试。Mockito
1. 项目介绍
2. dubbo、netty介绍原理
3. 限流算法
4. zk挂了怎么办
5. 秒杀场景设计,应付突然的爆发流量
6. redis的热点key问题
7. redis的更新策略(先操作数据库还是先操作缓存)
8. 分布式数据一致性
9. 一致性哈希
10. 消息队列原理介绍(不太会)
11. full gc问题,怎么排查
12. jvm的回收策略
13. ClassLoader原理和应用
14. 注解的原理
15. 数据库原理,数据库中间件,索引优化
16. aop原理和应用
17. 大数据相关,MapReduce
18. 机器学习有了解么?
19. Java的新技术,以及技术最新进展
20. Docker的原理
1、全程项目
2、讨论了一下数据库表设计
1、项目介绍
2、分布式事务
3、Java三大特性
4、数据库表设计
5、RPC原理
6、netty原理
7、降级策略和降级框架
都是基础问题