面试从处处碰壁到受宠若惊!这种feel还是不错的,来梳理一下第五次找工作的经历

这次找工作的经历其实还好,远不像第一次找工作是那样的刻骨铭心。一轮下来,感觉疫情之下,岗位及薪资相较于之前真的是有了很大的差别。面试机会还是比较少的。

背景

旅游行业受到疫情的冲击很大,公司因此裁掉了整个部门。2020年6月多发生的事情。给了赔偿金,所以心理还稳一点,不至于断粮、断贷、断了生活。所以,休养生息了一个多月后,开始找工作。

  • 学历:成考大专
  • 工种:JAVA后端
  • 年龄:未满31岁,差个几百天
  • 经验:9年多(JAVA-5年左右)
  • 面岗:高级/资深
  • 地点:福报城市-大杭州
  • 要求:平薪及以上 30w/年

刚开始心理是没太大底的,不知道自己目前的专业知识是在什么层次,有点忐忑。网上/现实很多人都在说今年的求职之路比较难,所以还是心理还是对现实的打压有一个预估的。


前奏

主要在BOSS上投递(拉购投了几个)。有基本的行业倾向和地域选择,由此辐射出要投递的公司。

有200次左右的打招呼,包括主动、被动。实际到达投递简历环节50个左右,最终筛选通过有13次面试机会。

学历这块确实是问题,很多hr聊天过程中明确硬性条件本科。而且不是全日制大专,也容易拿来说事!(只能说年少无知,学业不成)

时间:7月5日 - 8月13日最终确定,基本上每周2-3个面试机会,没有面试就去复习、内部消化。(其中3个是电面,其他见面)

前4-5个是磨合面试状态,及时调整自身的发挥和方式。


过程

只记录过程中印象深记得的问题,不是全部。关于非技术性的团队、任务、划分等问题没有列出。

第一家 (医疗行业) 电面 一面挂

面试官:问、追问、细问,不做解答

  • 1.redis锁的删除、redis键的删除?
  • 2.redis AOF方式是否只记录了写操作?(准确点应该包含驱逐策略及自动删除的相关操作)
  • 3.mysql 事务隔离级别。RR、RC、RU模式下会不会产生幻读问题。mysql中的锁,间隙锁、临键锁、意向锁等的不同角度询问。
  • 4.mysql添加索引的方式、索引的类型、不走索引的情况,索引结构(聚簇索引),sql优化的几种方式。
  • 5.线程池中的 countdownlatch的使用场景。并发包的一些介绍。
  • 6.线程的内存模型,线程内共享变量需要有什么注意的地方。
  • 项目相关、业务相关问题

PS:没有做准备,很多知识点属于朦胧状态,很仓促/语言逻辑组织有问题。40分钟左右,当场就感觉到了会挂。

第二家 (电商行业) 见面 一面挂

面试官:问、追问、对问题做解答

  • 1.arraylist 和 linkedlist的差别?
  • 2.arraylist 和 hashset的区别?
  • 3.hashmap的get方法描述?
  • 4.rocketMQ的groupid是什么?
  • 5.oracle 和 mysql的语法区别?
  • 6.RocketMQ和 RabbitMQ的区别是什么?
  • 7.线程死锁的场景?
  • 8.线程池的创建逻辑及使用?
  • 9.预设场景提供解决方案!项目、业务相关问题

PS:过程比较和谐,面试官会耐心的对没回答出来的做解释。面完1个多小时之后,他说去和上级反馈,5-8分钟之后,说回去等通知,就知道凉了,不抱有希望。

第三家 (电商) 见面 一面挂

面试官:问、追问

  • 1.springMVC调用过程?
  • 2.spring的启动过程?
  • 3.springBoot、springCloud的使用?
  • 4.redis的主从同步过程、redis的hash槽,一致性hash,redis的使用,redis和数据库的处理?
  • 5.rocketMQ的执行逻辑。 rocketMQ和rabbitMQ的区别?
  • 6.rocketMQ的推 和 拉 有什么区别?
  • 7.rocketMQ的消息消费流程是什么, broken的区分?
  • 8.数据库的b+树,红黑树区别?
  • 其他

PS:30分钟,这次面试内容的知识体系感觉大部分没有复习到,回答的很差,感觉挺沮丧,遂快速放弃。回家复习。

第四家 (教育) 见面 一面挂

面试官:问、追问、让自己总结每个阶段的回答要点

  • 1.sql语句的执行过程 (从执行 -> 返回)?
  • 2.每个数据库都有内存表, 数据库层面的缓存?
  • 3.url的去重处理??
  • 4.b+tree的查询过程,叶子节点存储结构?
  • 5.偏重算法层面的一些问题?
  • 6.爬虫、搜索等方面的问题?
  • 7.业务及之前工作经验等

PS:1个多小时,这次明显感觉面试官的段位要高我太多太多了,40岁左右,深度、广度全方位碾压我。他的引导性很强,面试过程是很舒服的。

详见:面试官不经意的露出微微一笑,我就知道我凉了,大神总是喜欢降维打击

第五家 (智能服务) 见面 一面挂

面试官:问

  • 1.入参为Long a, int b方法的比较实现,返回ture/false。(手写)
  • 2.最小栈的实现(手写)
  • 3.set的实现(原理)
  • 4.碰到的问题?
  • 5.XSS是什么?解决方式有哪些?
  • 6.其他

PS:40分钟左右,面试官对于基础的考量很多,自己的一些回答没到点上。卒。

以上经历了2周左右时间,了解了自己在哪方面准备的不足,期间及之后去狂补知识点。从起床到晚上看书、刷面经。从深度和广度去理解加深记忆。

感觉之前问到的问题,从一个角度提问能大概回答,从另一个角度就乱了。还是理解深度不到位。

晚上9点 - 12点左右外出散步。一路上对某一知识点进行复述,琢磨面试官会从什么角度发起提问及知识点应该怎么扩展描述。
对自我介绍、项目描述、碰到的问题着重挑选几个做复述。

第六家 (2B业务) 电面 二面挂

一面:问、细问、引申问

线程、锁、数据库原理、jvm、项目优化、sql优化、Redis等、团队管理、项目经验等。

PS: 1个半小时左右,应该是之前比较丰富的经验占有优势,技术问题也差不多都答上来了,面试官居然说:“经验挺丰富,如果从业务评级,可能比我高,之后联系你二面”

二面:我不知道在干嘛!,电面群面(4个人)

自我介绍、工作经历、搜索相关的2个问题。

PS:10分钟不到,面试结束。之后没有下文了,对它兴趣不大,它对我兴趣也不大。可能是学历有要求(hr要了学历证书编号、身份证等信息,后续没有后续了)

第七家 (电商业务) 见面 一面挂

面试官(40多):(很真实)“来吧,你要这个工资,得有对应的技术能力”, 于是在纸上开始罗列知识点,逐项询问

1. 数据结构:map(treeset, hashmap, hashtable )
          set(treeset)
          list(vectory,linklist,arraylist)
2. 设计模式: 工厂、单例  (你还知道其他什么模式?应用场景)          

3. JVM:类加载、GC机制....

4. 锁:Lock、synchronized...

5. 数据库:...

6. .....

7. .....

8. .....

9. .....

10. .....

......


没有太多废话,直接一项一项验证。每一项他会拆出3-4个内容询问。每一个又有几个不同角度的问题试探。我答对了,他画个勾勾,答错了画个叉叉,还有的打个对勾再加一叉。

很丢脸,一道很基础的题,我手写的太草率。以为能过关,没想到他在深究,我太随意了也无心及时修改,他说这个暴露了很深很大的问题。他又说达不到这个薪资,而我在反思那个问题为啥没有认真考虑去写,遂无心恋战,卒。

PS:请认真对待每一次面试机会。每一次考验自己能力的时候不要太随意。

第八家 (电商业务) 见面 一面挂

面试官TL: 问、深问、细问

在我感觉他是一种不走寻常路的问法。在深入了解对方的知识体系建立的完整性及深入性。

  1. disconf的运行原理是什么?
  2. 你有爬虫经验,它的原理是什么?过程是什么?
  3. sentinel你有用过,它的原理是什么?你是怎么做的?
  4. 其他

PS:能很明显的感觉到他的考量方式和之前的面试官有很大不同。他在围绕我工作经验中使用到的一些插件、框架发问。要求是不仅会用,而且要有较深的理解/深入的思考。我这里回答的不太好,感觉偏外围的东西,自己确实没有深入去关注。所以当天及之后恶补了下相关知识。

第九家 (智能应用) 电面 一面挂

面试官:问、深问、细问、侧面问

  • 1.设计模式
  • 2.wait(),sleep()区别 【锁、CPU两种资源如何处理的】都释放cpu资源,sleep不释放锁,wait释放锁
  • 3.synchronized 为什么会阻塞?原理、实现、和lock区别
  • 4.countdownlatch,如果有个线程执行失败,如何处理( 调用wait( time)带超时时间的方法)
  • 5.MVCC 【多版本控制事务,创建视图处理,不同的事务会看到不同的数据集,ACID中隔离性实现的基础】
  • 6.epoll模型
  • 7…

PS:前期对话不太好,我居然忘了投过这个公司,面试官口气稍重的让我去网上好好查查这个公司的信息。

面试过程一个半小时。面试官会对一个问题进行深入、反复、侧面的询问。目的就是考察你对这个知识点的掌握程度。技术面后做了基本的常规问题交流。没有下文,凉了。

第十家(企业应用) 见面 挂

面试官A:问项目
我招的是资深架构师,你的项目没什么亮点!沟通过后不怎么合适。找业务线主管面你。

面试官B:问、细问、场景问

  • 1.dubbo服务的超时机制是怎么做的?,同步与异步区别?(FutureTask get()不断循环比较时间, Netty的类似实现类使用)
    同步:创建DefaultFuture之后,直接get阻塞等待;
    异步:创建DefaultFuture之后,使用FutureAdapter进行包装,之后设置到当前线程的RpcContext中;后续用户在合适的时候自己从RpcContext获取future,之后get。
  • 2.zk的临时节点,监控是怎么做的? 引用zkclient, 创建IzkDataListener。 重写 handlerDataChange, handerDataDelete
  • 3.RocketMQ消费消息时如何保证幂等性?
    首先消息有全局唯一id
    a.数据库中查询当前数据的状态,是否已经修改,如已修改则不处理。
    b.将id存在redis缓存里,每次消费时,先去redis里对比一下是否存在。如果存在则不消费。
    c.redis锁/zk锁,将当前唯一标识加锁,每次看是否能获取到锁。和上面类似。
  • 4.ES的服务器优化,日志搜集过程,数据写入、读取和内存的关系
  • 5.5个G的单个日志文件,如何快速写入到ES中不影响服务器。
  • 6.300W表A,500W表B,200W表C的联合查询sql如何优化,(有查询条件、多对多关系、不分表、不建新表,只针对sql优化)
a.首先看explain,是否走索引
b.联合查询方式,left join/ right join/ inner join,根据业务实现使用
c.查询字段处理,  *改为精确字段,只返回满足需求的字段
d.on 条件及 where 条件的逻辑组织
e.数据库字段的处理,长度/数据类型的调整。
f. 存储过程?(不建议这样做)
  • 7.针对6的场景,如何在代码结构上优化
a. 加缓存,对当前条件查询的结果进行缓存(如涉及数据一致性, 和Mysql服务端的高速缓存类比)
b. 该类数据转换到ES存储,加快他的查询效率。
c. 针对日切统计业务,增加新表存储日切数据。
  • 8.领域模型一点问题
  • 其他…

PS: 共2个小时左右吧,问的问题都做了回答,但是达不到他的要求,他们最后讨论后,觉得和工作岗位不匹配。卒。

上面这段期间的话,主要是在加深对于知识点的理解,及业务场景的应用。

第十一家 二面

面试官:问、追问、细问、侧面问

  • 1.分布式id实现有哪几种?优缺点是哪些?
  • 2.CAP原则, zk是属于哪哪种的结合?
  • 3.数据库为什么要分表 128张 ?
  • 4.分表的几种方式及优缺点?https://www.cnblogs.com/myseries/p/11268574.html
  • 5.dubbo -> zk 之间是基于什么协议? 长连接还是短连接?为什么?
  • 6.@Transactional?(如果用于注释私有方法,则不会产生任何效果。代理生成器将忽略它们。)
  • 7.tcp协议的字符流如何区分业务?(数据长度、加标识)
  • 8.hession序列化处理相关问题?
  • 9.年轻代 + 年老代的比例?
  • 10.dubbo服务的发布? 版本控制、version控制、分组控制
  • 11.dubbo节点结构?
zk下的dubbo路径
    /dubbo
        /Interface全包名
            /consumer
                consumer、ip地址、应用名称、全路径、参数等
           /configurators
           / router
          /provider
                协议、ip、端口、应用名臣、版本号、全路径、参数等
  • 12.幂等性验证,如果有大量请求,如何保证只能请求一次?如支付宝的付款码(扫码之后立马标记为失效!)
  • 13.RockMQ的消息顺序消费。提供者 + 消费者 可以集群部署么?怎么处理?
  • 14.Topic和queue的关系
  • 15.CPU飚 100%,内存占用率不高,如何查询处理,原因。 (top查找进程,jstac -l pid 处理)
  • 其他

PS: 我应该有2个点没答上来。技术问完之后一面面试官对我笑了,简单常规问题后,等二面。TL问了些技术问题后,对个人经历做了询问,表现出了欣赏,共两个半小时吧。最后hr做了基本沟通,回去等通知。

第十二家 三面

面试官:场景问、技术问、业务问

有一个项目/功能设计笔试,这不是信手拈来。做完开始面。

整体围绕jvm、数据库、MQ、Redis、Dubbo。除了没做过的答不上来,其他都正常的回答。前两轮2个多小时,后面是跟技术总监聊经历。回去等通知。

  • 1.JVM的类加载过程,每一步做了什么操作?
  • 2.50个并发请求,同时操作redis的set\get操作,是否需要对相关方法加锁?为什么?
  • 3.500-1000w的用户数,每个学校占一部分用户。如果某个一个老师布置了一个作业,要同步发送到他的学生,怎么做才能保证高效且不会对程序造成影响?
  • 4.怎么样快速清除数据库中的过期订单数据?有哪些方法?利弊是什么?
  • 5.RocketMQ的消费流程/过程是什么?
  • 6.AMQP?延时队列?
  • 7.分布式锁的实现(Redis有两种,ZK有三种)
  • 8.讲一下单例模式,编写时要注意的概念?
  • 9.final关键字的用法?
  • 10.SpringBoot某个注解的实现逻辑?
  • 11.碰到的问题详细说明?(背景 -> 实现 -> 问题 -> 解决 -> 效果 -> 影响 -> 总结)
  • 12.数据库优化相关?
  • 13.MySAIM 和InnoDB引擎的区别?
  • 14.数据库索引的使用与优化?
  • 15.为什么InnoDB使用b+树,为什么不用其他数据结构?
  • 16.实时通信/即时消息的展示场景处理?
  • 17.其他(平常怎么学习?阅读的书?)

PS:整体面试还是挺顺畅的,可能有之前的面试经验做背书吧,感觉自己已经在节奏上了。对于问题和对它的扩展处理都能有个
较为妥善的回答。面试官针对个别回答也表示出了:“你说的还挺全面/细致”

说明这一个月的知识梳理还是有成果的。还是要加强在脑海中的印象及对它的熟稔程度。
第十三家 (企业服务) 三面

面试官:技术问、项目问、场景问

  • 1.你做的项目介绍?拆开了、掰碎了一点一点的问。
  • 2.服务拆分细节?
  • 3.DDD中的事件驱动模型,针对实时通信展示的业务设计。
  • 4.Token的作用,及在项目中的应用,
  • 5.CSRF是什么?场景及处理方式?
  • 6.针对某一场景,数据库的设计?
  • 7.用例图、ER图、流程图、时序图简单画一下?
  • 8.之前公司的技术架构是什么样的?是怎么演变的?
  • 9.XXXXXXX, XXXX? XXX!
  • 10.横向加密和纵向加密了解么?(忘了是怎么问的了,不懂这个)
  • 11.Dubbo的实现原理?流程?手画
  • 12.Dubbo的十层?
  • 13.Dubbo的支持协议?列举场景?
  • 14.MySQL的索引添加原则,索引结构?
  • 15.BI的数据分析?
  • 16.其他非技术问题…

PS: 3次面试总共有三个多个小时吧。可能以前工作经验的缘故,非技术性的问题也谈了很多。面试官说:“我们这里有多个岗位在招工,我们商量下看看哪个岗位最适合你!”,听到这里有戏,回去等通知。

插曲:

期间有个算半个外包,非说自己不是外包的公司打电话来简单沟通。都没谈什么,hr就拿学历说事儿,压工资。我说按技术能力谈工资。

面试很顺畅,他要继续走流程。我拒绝了他。

结果

24小时内,最后三家公司陆续都给我打了意向电话,谈了薪资、待遇和福利。这放在以前是想都没想过的。本以为今年会是被人挑,没想到是我要去挑了。

这种感觉还是不错的,让自己有了很大的选择余地。而且更是让自己增强了不少信心和动力。

最终选择了一家心仪的、可持续发展的公司确定了入职时间。还能做个入职体检,给了自己4-5天的放松时间。完全抛弃了找工作前期的阴霾。哈哈。

写了个模板,拒绝了其他两家:

你好,经过慎重考虑,
我决定选择xxx行业...

疫情之下,感谢贵公司的面试邀请,以及面试官对我的肯定。
祝贵司稳健发展壮大!

总结

大厂、996福报我是无缘了。还是根据自己水平找个合适的公司,能在生活与工作中达到某种契合的状态吧。

要感谢自己的良好心态。能够及时调整心态和方向,在这段时间顶住了来自其他方面的压力。能静下心来认真的分析每次的面试过程和结果。能够不断的自我暗示及自我激励。(因为30岁比20岁所面临的压力真得是要大太多了)

找工作过程中,每个公司的用人需求也略有差别。看实力也看运气。有时候可能真得就要看运气了,合适的时间/合适的地点碰到了合适的公司且满足公司的要求。所以,一定要放松心态,积极地面对一切。而不要让坏情绪影响了自己的发挥。

建议

认真准备!认真准备!认真准备!(重要的事情说三遍~)

要认真对待每一次的面试机会!

每个人都有自己的特长优势,要仔细分析且善于利用。

同龄人没有我的工作经验多,可以发挥;工龄一样但技能优势不一样,可以发挥;技能雷同但可扩展深度强,可以发挥;就算拿出去像个路人,但也有【自己的博客】加持,表明自己是可持续成长的;…

反正有诸多可发挥可准备的点,那如何脱颖而出,就看你的发挥了。

这次面试有几个公司真得是在海选。一个岗位10几个人在竞争,面试签到表一页40行大部分都是java开发。有碰到很健谈的,有碰到年纪更大的,也有碰到满脸惆怅的。祝君顺利~

Tips:

1. 认真准备简历
我的简历在润色之下,才能获得这些面试机会。有人会认为我写的不错。

2. 认真准备知识点
加深理解,融会贯通。不要正着问会,反着问就不会了。

3. 调整心态
“失败乃成功之母”之类的废话就不多说了,消极/阴郁的状态肯定不会发挥太好

4. 个人特色
如果你能幽默的表述,就不要过于死板;
如果你善于全面分析,就不要点到即止;
如果你能够一针见血,就不要废话连篇;
如果你引导了面试官,就不要顺着他走;
如果你有更强的一面,请自信的发挥出来。

5. 多试试
任何面试都是一次机会。善于把握,不要浪费。

6. 及时复盘
分析每次面试,是哪里出现了问题?
哪方面的知识点没准备好?
哪里回答的有疏漏?
哪里可以扩展表述?
哪里的回答可以引申出更好的点?

多尝试去练习、去表述。

好了,我要放松两天,去上班了。


以上只是来自一个‘大龄程序猿’的整理。这是工作,也是生活。记录所有的点点滴滴! 《一个程序猿的编码人生》

你可能感兴趣的:(成长,面试,java,程序猿,找工作)