我的【Java】面试日记
背景
在老东家五年了,总共工作整七年,经历两家公司。2019-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。
准备
撰写简历,每天下班回家 7-12点看视频,刷博客,看面试题。学习内容:JavaGuide,《某某时间》系列专题,《某某课堂》学习视频。准备内容:Java 基础,集合,线程池,锁,MySQL索引,事务,Spring等。
2019-10.31 周四
提了离职已经有二十多天了,今天老板签了字,办了离职手续,《某某直聘》上传简历,刷新简历。《某东供应链部门》打电话问了问我的学历是否统招本科,约我明天下午去面试。不过他也算是大厂吧,没有面试经验咋办,心里很忐忑,没关系,开始加油吧!咦,有条消息,我一看是我同学给我发的截图,原来他刷到我的简历了,他说帮我内推,内心还是挺激动的。内推公司:《打车》
2019-11-01 周五
早上五点半爬起来了,开始看视频,刷资料,准备面试,一直到12:00,没吃饭。公司太远了,在亦庄,要两个小时才能到,出了地铁口,映入眼帘的便是他们的大楼。找到部门,给了张面试题。
- HashMap,HashTable,ConcurrentHashMap的共同点和区别?
- Spring的 init-method,destroy-method的实现方式?
- 说几种实现幂等的方式?
- 说几种分布式锁的实现方式?
- 有一个List集合,多线程计算总和,说出你的思路和使用到的框架。
- 一个开放题目,数三角形的
做完题目,感觉还比较OK,来了一个面试官,大概三十多左右。
- 自我介绍
- 介绍一下项目
- JVM内存模型
- MySQL事务隔离的底层实现?
- MySQL索引介绍一下?
- 命中索引要注意什么?
- List去重,手写代码,考察基础
二面:部门负责人
- 简单聊聊,介绍团队业务,有什么要问的吗?等待通知。(说好的《打车》内推呢,咋还不给我打电话呀,算了,可能简历没过。)
总结:MySQL事务隔离底层实现细节还要多补充一下,JVM细节在多看看。
接到《某某租房》公司面试邀约。下周一下午面,正好周六日在准备准备。
2019-11-04 周一
坐地铁辗转到了公司大楼。你好,来面试的。领到一份面试题,来到三楼休息室,一大堆人跟菜市场似的。我擦,竞争压力这么大啊,看了一眼面试题,好多不会的,算了,不做了,走吧。来都来了,试试呗。开始做题。
- String new String 的关系 ==,equals
- 两个链表相交,求交点
- 三个线程顺序打印ABC
- 如果aab,aba相等,给两个字符串,判断是否相等
- 画一下RPC的架构图
一面:一位说话比较轻柔的技术官。
- 自我介绍
- String ,new String 这道题为什么这么选?原因?
- 说一下项目
- 手写一个单例
- JVM内存模型,JAVA 栈能分配对象吗?
- 说一下类加载过程,双亲委派模型源码看过吗?介绍一下
- 什么情况下栈会溢出?
- 栈帧介绍一下?
- MySQL索引了解吗?画一下?
- 从业务角度出发,如何设计MySQL数据库?有哪些优化点?
- 垃圾回收了解吗?介绍一下?
- 讲一下AOP的原理?Cglib能代理final方法吗?
面试官对我说:我觉得还OK,你等一下,我们领导开会,让HR通知你改天二面吧。:好的,启程回家。
同学微信:我们HR给你打电话了吗?:没有,那我让他约你。
HR:你好,为了不耽误时间,约您电话面试。(同学介入)
HR:你好,周五直接来公司面试。。。。
2019-11-05 周二
相安无事,帮表弟的朋友扣了我的驾照9分。。。下午去某公司面试,结果面试官没有接到电话,保安也不让我去问,算了,走人吧。
2019-11-06 周三
《某某租房》复试。面试官很年轻,比我大两岁,人家已经是研发经理了,看看我。哎。。。。
- 项目为什么不用RPC框架?
- 了解RPC吗?,画一下流程图?
- RPC和HTTP协议有什么区别?
- 长连接是物理真实存在的吗?
- 介绍一下项目?
- MQ 消息丢了怎么办?发消息是原子操作吗?
三面:研发总监
- 锁介绍一下?有哪些?
- 线程阻塞从操作系统的角度介绍一下?
- 其他的记不清了
下午四面:技术总监
- HTTPS的流程
- 你认为你还欠缺什么?
- 如何学习的?
- 瞎扯淡,行了,签字,录用了
HR谈offer,回家喽。
2019-11-07 周四
《某某优鲜》下午两点,找大楼找了半天。公司好几层,我擦,没见过这阵仗。上楼等一会,没有面试题。
一面:
- 你的项目如何拆分的?为什么这么拆?
- 如何保证服务高可用?
- MySQL挂了怎么办?(挂就挂了,很惭愧,公司没实现数据库高可用。。。。)
- 项目经历有点差啊,就不问你互联网项目问题了
- 说一下 WebSocket协议
- 说一下HTTPS协议
二面:
- SpringBoot了解吗?和Spring的区别?
- 如果想做定制化开发,怎么做?
- @Conditional 说一下
- 事务的传播机制?
- 说说MySQL索引?
- 可重入锁的原理?(state ,AQS)
- 拆分服务,服务治理有了解吗?
HR:简单聊了一下,为什么五年不离职?你这样的很少见啊。还有一轮部门老大面试,你先回去吧,电话面。
晚上收到通知,周五6点电话面试。
2019-11-08 周五
该来的终于来了,要面对最终BOSS了。不过还好不用坐地铁了,上午看了几个视频,准备了一下,中午12点,洗个澡,收拾收拾。骑车出发,心情很忐忑。骑车到了地方,公司LOGO映入眼帘,两座大楼。给HR打电话,接待,上楼,等了一会,一个年轻的面试官过来了。
- 设计一个秒杀系统,讲一下你的思路。(我擦!!!)
- 如何设计限流?
- 库存怎么扣减? decrby 可以吗?
- 库存扣减失败怎么办?
- 画一下项目结构?
- a,b,c 联合索引, a=1,b=1,c>1 能命中索引吗? a=1,b>1,c=1能命中索引吗?
- JVM 堆说一下?触发Full GC 的场景有哪些?
- 说说G1垃圾回收器?老年代,年轻代如何分配?
- Redis 锁出错怎么办?
- Redis 扣减库存有问题怎么办?
- 设计一个转账系统? A->B转100块,有没有思路?
- Redis 有哪些持久化方式?
- Redis 数据会存放到磁盘吗?
- Redis为什么这么快?
- Linux 统计top10 IP访问日志,用到哪些命令?(不会)
- Linux 自己用过哪些命令呢?
- 如何查看Dump日志?怎么产生的?命令有哪些?
- 一个线程池 ,10个核心,100个最大线程数,100个队列,10000个请求打过来,描述一下线程池如何运行? 拒绝了怎么办?
- 考察一下基础知识吧,String new String 的区别? (== equals )
二面:(和一面问了好几个重复的问题,害的我又讲了一遍)
- 项目你认为有哪些难点?(活动报名超员,联想到秒杀)
- 秒杀场景如何处理?
- 可以用Redis decrby 做库存扣减吗?如何做?(可以用 lua保证原子性)
- lua太重,有别的方案吗?
- 库存如何恢复?
- 防止超卖还不行,未支付的订单如何处理?
- 用户名密码如何防止被盗?(js加密,不行,还是能破解,哦,https。。。。)
- 说说https的流程?
- 有了解过哪些非对称加密算法?对称加密算法呢?
- c,b,a 索引问题,c=1,b=1,a=1 能命中索引吗? c>1,b=1,c=1 能命中索引吗?为什么?
- 评论业务如何区分模块的? (bizId)
- 某个业务打爆数据库了怎么办?(分库,拆分服务,单独部署,还有呢?MQ)
- 了解限流吗?降级?算了,你也没接触过,不问了。(ORZ)
- Linux 统计top10 IP访问日志,用到哪些命令?(不会)
- 说一说你对HashMap的结构理解,如果Key相同怎么办,链表是前插还是后插?红黑树呢?
- 用过哪些Linux命令?(mkdir,ll,等。。。。linux确实是我的弱项,以后要恶补了。)
- 1 2 2 3 3 4 4 5,如何确定3的索引位置? (计数统计,O(N) O(N),还有更好的方法吗?循环吧。(正确答案二分法,我提到了,但是思路却错了,被批了一顿)
- GIT 团队开发如何去做?如果有个 feature 不用上线怎么办呢?
- maven 如果包冲突,不解决会有什么问题?如何解决包冲突问题?
- 设计一下Dubbo的线程池? 每次请求50ms 200 QPS,客户端500ms超时,如何设计? 直接打入200个请求呢?队列多大?线程池多大?(回答的不好)
- Integer a1=10000 Integer a2=10000,他俩 == 结果? 怎么才能相等呢?(equals,== 比较的引用地址,考察Integer 缓存)
- Integer a1=100 Integer a2=100 呢? 参数可以设置吗?如何设置?
部门老大面:
- 你是某某同学吧?(舍友)
- 说一下以后的打算?
- 技术成长?业务方面有哪些选择?
- 不能光看技术,要熟悉业务
- 如果DB要挂了,用哪些方式去解决?(说了一些我认为的方案,但是明显不是。。毕竟没接触过,所以只能自己理解)
- 如何统计QPS?有没有了解市面上的框架?如何实现,原理呢?
- 他们该问的都问了,聊聊非技术的吧
- 等一下,我让HR找你。
HR面:
- 离职原因?
- 五年怎么离职了呢?
- 期望薪资?
- 周一等消息吧。
和同学简单聊了聊。同学说我的回答还可以,只不过经验少一些。(哎,小公司业务量小,确实吃亏)。慢慢来!我说,有这次面试机会我已经知足了!!!要不然我的简历肯定是过不了的。
总结
面试之前确实要多做准备,不过有实战经验的话更佳,怪不得大厂跳大厂较为容易一些。小公司也不要气馁,一些公司不看项目,看你对高并发项目的理解,哪怕自己没做过,有自己的方案也可以。基础必须扎实,不要只背理论,深入了解,了解的越深越好,虽说面试造火箭,工作拧螺丝,你有造火箭的能力还怕拧不好螺丝吗?
面了整整一周,总共四家公司,最终结果自己还是可以接受的。 JVM,MySQL必须掌握,其他基础知识要牢固,并且要用到实战上,要不然学再多也是理论,Linux操作系统要恶补一下,由于自己高并发场景经验较少,这个只能在业务量较大的公司才能学到。
另外,市场上的资料,不管是付费的还是非付费的确实对面试很有帮助,但是如果自己有个好项目搭配的话,更好一些,要不然面试官都没法问。
别问我为什么五年不离职,我也不知道,是好事还是坏事?
整体面下来,感觉自己准备的勉强及格了,但还是不够好,应该能回答的更好的,让我想起了一句话,你本来可以做的更好。所以,告诫自己不要再浪费时间,多学习,多总结。很幸运,再次感谢同学的内推,谢谢你。
于 2019-11-08 21:02
我的【Java】面试日记的更多相关文章
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结
我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...
- 转:最近5年133个Java面试问题列表
最近5年133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来 ...
- java面试宝典(蓝桥学院)
Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...
- JAVA面试精选【Java基础第一部分】
这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童 ...
- Java面试必备知识
JAVA面试必备知识 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可 ...
- java面试和笔试大全 分类: 面试 2015-07-10 22:07 10人阅读 评论(0) 收藏
2.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型 ...
- 近5年133个Java面试问题列表
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...
- java 面试
115个Java面试题和答案——终极列表(上) 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一 ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)
hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加 ...
随机推荐
- PID算法的理解及场景模拟
增量式PID算法的简化版之后的公式: △u(t)=Ae(t)-Be(t-1)+Ce(t-2) △u:PID控制器输出的下一时刻的调整量 e(t):PID控制器在当前时刻的状态变化量-给定值 e(t-1 ...
- 常见过滤器表格整理,Date,time过滤格式表;常用标签表
一.常用过滤器表 二.date.time过滤器参数表 三.模板常用标签 四.模板标签示例 ①if,for ②url解析标签 ③with缓存标签 ④autoescape的使用 ⑤注释标签(多行注释)一般 ...
- 解决MVC中Model上的特性在EF框架刷新时清空的问题
MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因 ...
- KafkaStream低级别API
开发者可以通过Processor接口来实现自己的自定义处理逻辑.接口提供了Process和Punctuate方法. 其中:Process方法用于处理接受到的消息 Punctuate方法指定时间间隔周期 ...
- 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等
本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...
- unittest生成测试报告
1.先导入HTMLTestRunner模块 2.实例一脚本如下 #coding=utf-8 import unittest import HTMLTestRunner #封装批量执行用例 def al ...
- Oracle基于延时的盲注总结
0x00 前言 oracle注入中可以通过页面响应的状态,这里指的是响应时间,通过这种方式判断SQL是否被执行的方式,便是时间盲注: oracle的时间盲注通常使用DBMS_PIPE.RECEIVE_ ...
- Oracle报错注入总结
0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句], ...
- 渗透测试-基于白名单执行payload--Regsvr32
复现亮神课程 基于白名单执行payload--Regsvr32 0x01 Regsvr32 Regsvr32命令用于注册COM组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令, ...
- opencv::卷积运算函数filter2D()
opencv::卷积运算函数filter2D() 使用掩模板矩阵(kernel)计算每个像素值 与原图相比,没有黑边 int main(int argc, char** argv) { Mat src ...