# 字节面试,管你是不是刚毕业!
作者:小傅哥
博客:https://bugstack.cn (opens new window)
星球:https://t.zsxq.com/05zj2niYR (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
# 一、他,上来打我!
- 【字节】
除了MQ解耦发奖,是否还有比MQ更优的解决方案?
- 【字节】
你现在是学习的项目,但如果部署上线,还有哪些地方需要改进?
- 【字节】
如果让你来评估项目的QPS的话,你会用什么方式来评估?(补充;不要做压测,就根据设计、硬件配置推导QPS)
- 【字节】
比如说:16核64G的机器,做秒杀系统,你会修改和配置哪些东西?(不考虑 Redis、Kafka等)
- 【字节】
接着上面,SpringBoot、JVM 配置参数还有哪些。你提到 JVM 堆大小,如果配置过大会有什么副作用。
- 【字节】
秒杀场景下用哪种垃圾回收器合适
- 【字节】
写代码时有没有什么方式,尽量减少FullGC
- 【字节】
实现短信验证码的生成和校验,只使用Java语言,不能使用Redis等存储工具
- 【百度】
说一下AbstractRoutingDataSource,它的核心方法?
- 【百度】
多数据源如何配置?
- 【百度】
对MyBatis的拦截器有了解吗?
- 【京东】
在这个纸上,画一下你刚才说的策略模式、模板模式和工厂模式的代码实现结构
- 【京东】
你提到的DDD架构中,依赖倒置做了防腐(ACL)隔离。请详细说明下
- 【小红书】
如果让你从零到一设计一个配置中心你怎么设计,还有es的底层是怎么实现的?
- 更多... https://bugstack.cn/md/zsxq/material/interview.html (opens new window)
这些问题已经一一做了解答,并且还有星球伙伴的讨论。这也是大家加入小傅哥星球【码农会锁】除了做实战项目以外的技术价值,因为你所有的技术成长问题,我都可以为你兜底。解答链接:https://t.zsxq.com/11PQTlMvA (opens new window) - 星球中还有各种各样的场景问题解决方案,都可以学习。
说实话,就这么面。没有个2~3年开发经验,根本扛不住。但就这么面,如果拿Offer了,薪资待遇也是贼高,起步即巅峰!
薪资基本能达到普码工作3年-4年的待遇。
对于越来越多这样有难度的面试方式,我也想了想🤔为啥?
其实最大的原因就是大厂掐尖,面这样的问题,是说明真的有人能回答的出来。能回来的出来的,基本也是研究生或者很牛的本科生,在校期间就非常积极主动的做了这样复杂的项目锻炼,还做了不少上线部署对外提供服务的事情。虽然回答的可能有些不足,但往往也能看出求职者的深度积累到底有多少,深度越深,薪资越高!
大部分校招生也会直呼:"太TM卷了,学不完,根本学不完
"。但对于喜欢编程的人会觉得挺爽,写代码还能赚钱,美滋滋。
其实说到根上,在对编程有那么一点喜欢且不是谋生手段的情况下。用大学4年或者加研究生2~3年,也就是4~7年时间,完全可以锻炼出一个非常优秀的研发工程师。
差距是从每一天积累拉开的!那如果你想把这差距缩小点,哪怕先面个不是字节这类的大厂,走个中小厂的话,那就要多实战!!!
# 二、请,正确学习!
# 1. 多犯错误
强烈不建议已经渡过了编程新手村的伙伴,仍需要对照着视频,一行一行的跟着写代码。而且对照视频抄代码,其实比有思考的写代码,要累的多。这样的学代码,非常缺少自己的思考,也会很少地遇到错误。感觉挺良好,其实啥也没学到。
学习编程时,一个编程错误。其实就可能让你检索出一堆的犯这个错的各种情况,你需要一个个验证。你到的错误到底是怎么导致的。好啦,反反复复的折腾。最后,你吸收了一堆的编程经验和调试技巧。这就是多犯错的重要性。
# 2. 实践先行
编程不需要过早的看特别的多的理论资料,因为所有的理论也都是来自于实践后的提炼总结。但提炼的总结往往会有些抽象,同时又伴有各种的名词定义。这就像买了台自行车🚴🏻,买回来拆了研究,还是先骑着走走。
而学习编程最好的方式是能先看到结果,把一个个大项目的所涉及的小知识点,碎片化的验证运行输出结果。有了结果,在分析细节,无论是加日志、打断点、补功能,也都变得顺利了起来。当这些实践都验证的充足了,在去看理论就会恍然大悟,原来他说的这个是意思啊!八戒!
# 3. 结果导向
缺少目标感是不少伙伴学习编程时遇到的问题,每当面对一项需要学习的内容时,也会缺少启动方向。对于这样的情况,往往我的做法是目标驱动,结果导向。先明确我要做的东西的最终结果,以最终结果来驱动我的学习路径。
在这个过程,不需要事先就把所有条件都准备好。比如我学习一个项目,但项目里A不会、B不懂、C不行。没关系,先动起来。哪怕是开始一点点,也比一直站着想不动强。只要开始了,剩下的就是遇山开山⛰罢了!
# 4. 缩小问题
每次遇到什么编程不会的情况,先尝试把问题缩小。别一下把问题搞的很大,尤其是别写了一堆的代码的才测试。
当你学会把问题缩小,缩最容易解决的范围后,其实大问题也就变成了小问题。这也就编程中第一条编程原则,康威定律提到的。问题越小越容易理解和被处理。就像我的博客 bugstack.cn (opens new window) 3年来,有几百万字的文字输出,但对于我来说,其实只是每天都积累一点,有时候可能就是几十字。而这些也都是碎片化的时间来一个个解决我要表达的内容。
# 5. 提高认知
其实编码能力也是思维能力,思维的强弱有认知决定。而这份编程认知,一方面是来自于自己的多种实践,解决过不同场景的各类技术问题,同时具有创造性的设计了优秀的方案,从而积累的能力。这也就是我前面提到的,你要多犯错,你不犯错,你就没机会创造。而另外一方面的提高认知,是做很多优秀的项目,这就跟去大厂工作一样,要不就不是里面的项目经验和大牛的技巧吗?!
第二呢,是来自于对优秀框架源码和项目的学习。在这里我想说,MyBatis 源码,真是贼可以学习一下。一个框架,以会话模型为入口,进入后。运用数十种设计模式,拆分数据源、连接池、执行器、解析器等,兼职是学习的宝藏类代码。在者这些东西都锻炼了,之后呢,要进行实践,要做项目,要把各种所学和项目结合起来锻炼。通过这样的方式,提高编程认知,锻炼编程能力。
# 6. 拷贝优秀
学习建议、职业指导、技术分享、述职答辩,每一项来自大牛的分享,都是非常有意义的信息积累,你可以针对性的借鉴和参考。尤其是能顺利的走到这个阶段的大牛,每一个都有很强的一面,否则这风风雨雨这些年中,早被职场淘汰了。
此外还有那些优秀大学的毕业生和海外就业/工作伙伴的学习方法,真的可以开阔出你很多的学习思路。而这些东西,不会有书、也不会有笔记、也不会有博客。因为比较琐碎,有时候就是一句一句零散的话,但却可能可以改变你命运的齿轮。
# 7. 保持热情
如果你对编程有好奇感,做出东西有兴奋劲,那么一定保持下去。长期坚持,你会扫出来很多编程路上的宝藏,让你兴奋的睡不着。当你有热情的学习编程后,会发现这东西太有意思了,兼职像一个额外的世界。而是你这个世界里小小的建造者,用着一个新的语言在构建新的世界。
# 8. 长期学习
入了编程这一行,基本就是要能长期学习了。没有那个技术的语言或者工作工具能长期使用的,都可能被替代,也都每年有新的东西出来。如果你想靠着混职场,不提高自己的技术,那35拿到砍,真的可能会对你下手!而长期学习,也能让你有底气,随时能走的出去,想留也能留的下来。别听有些maimai上的扯淡,只会技术不行啥的。要是不会技术,才不行,不够深入,才不行。技术永远是编程人员的立身之本。
# 9. 知识闭环
可能一开始你只是个小小的Java小程序,但随时工作年限的增加,你会逐步的学习到其他各个技术技能,甚至还会包括前端语言以及运维能力。再往后,还可能会夸1~3个编程语言来完成你的开发诉求。而我,也是这样一路经历过来的10年编程。
在工作到3~5年的时候,时而就在想,自己是否具备一个完整的技术栈体系,如果脱离公司的框架,我是否能构建出我的应用。从那个时候开始,不断的积累自己对各项技术栈的运用,用市面的技术栈替代各项公司里用过的技术栈,把他们的应用学会,把他们的原理搞透。一点点的,也就把各项技术栈体系打通了,最后也就走到了架构师的岗位。
# 10. 氛围圈子
讲道理,要不买点书看、要不加入些技术圈子,用不了多少钱,真的用不了多少钱。给自己点技术投资,多开开事业,多一些技术见闻。别太让自己的技术成长闭塞,做做自己以前可能没做过的选择,也许你命运的齿轮就开始转动了!
以下这个技术圈子强烈建议加入,因为你可以学习到来自10年编程经验的架构师所编写的各项浅浅深深不同梯度难度的项目,也可以见闻到几千人的技术交流和知识积累,还可以学习到国内高校、海外留学伙伴的学习方式方法。这远比你看过一本书、听过一句话,都实在的多!
祝大家早日封神!
- ① 写够03万行代码 = 后天武者/炼体:炼肉筋骨
- ② 写够05万行代码 = 先天武者/明劲:破空炸响
- ③ 写够10万行代码 = 武师/暗劲:产生元气
- ④ 写够20万行代码 = 大师/化劲:全身布气
- ⑤ 写够30万行代码 = 宗师/丹劲:气集一点
- ⑥ 写够50万行代码 = 武圣/罡劲:透气成罡
- ⑧ 写够100万行代码 = 武神/破虚:罡气破空
- ⑨ 写够500万行代码 = 陆地神仙/见神:内视身体
- ⑩ 写够1000万行代码 = 星河大帝/成神:知晓未来