九月旺季已经来临,曾经什么时候,在17年的九月,通过再三考虑,我决定跳出一份干了四年且比较安逸的开发工做,当时下定决心,选择跳槽。最后跟着诸多农码一块儿涌进了一段为期两个月的面试高峰期。可是在选择跳出后,好多人都问我:“阿光,如今不是作的好好的么,怎么忽然间就选择离职了,再说了,如今外面的工做也很差找啊,并且在这里薪资也还不错,为啥要走?”当时,面对这样的问题,我只用了几个字给回复他们了:“我是作开发的,但如今的工做不是我想像的那种,我不要在天天作哪些业务代码了,我要跳出温馨区,我要迎接新的挑战。”java
在这狂热的九月里,个人简历投了无数个,也面试好几家不错的一线互联网公司,但最后都没有面上,最后,仍是无心间经过一个群的渠道,认识了几位大牛,最后报名,获取内推机会,最后通过努力,成功面入狗厂。算起来我仍是挺幸运的。程序员
如今也是九月,如今回味起来,那时候面试的路上也是蛮艰辛的。最近这几天我抽空整理了一下17年的面试经验,相信这些面试经验对那些想跳出温馨区,近期想换工做的码农们,这些面试经验,但愿对大家有所帮助。——后面我还总结了个人工做心得。面试
一、说说HashMap和Hashtable的区别 算法
二、说一下实现一个保证迭代顺序的HashMapspring
三、说一说排序算法,稳定性,复杂度编程
四、说一说GCspringboot
五、JVM如何加载一个类的过程,双亲委派模型中有哪些方法?性能优化
六、 TCP如何保证可靠传输?三次握手过程?数据结构
七、大家用什么Redis客户端? Redis高性能的缘由大概能够讲一些?架构
八、你熟悉哪些Redis的数据结构? zset是干什么的? 和set有什么区别?
一、什么是微服务?你知道有哪些框架?用过哪些框架?
二、springCloud和dubbo 有哪些区别?
三、什么是微服务熔断?什么是服务降级?
四、springboot和springcloud,请你谈谈对他们的理解?
五、你所知道的微服务技术栈有哪些?请列举一二
六、说说 RPC的实现原理
七、说说 Dubbo的实现原理
一、并发了解么?说说看你对并发的理解
二、什么是线程?线程和进程有什么区别?如何在Java中实现线程?
三、死锁与活锁的区别,死锁与饥饿的区别?
四、你知道在java中守护线程和本地线程区别么,说说你的见解?
五、Java中用到的线程调度算法是什么?
一、JVM内存分哪几个区,每一个区的做用是什么?
二、如和判断一个对象是否存活?(或者GC对象的断定方法)
三、简述java垃圾回收机制?
四、java中垃圾收集的方法有哪些?
五、如何自定义一个类加载器?你使用过哪些或者你在什么场景下须要一个自定义的类加载器吗?
六、作gc时,一个对象在内存各个Space中被移动的顺序是什么?
七、你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程当中有哪些收获?
上面就是个人面试笔记记录,这几个面试点应该是面试比较喜欢问的了,特别是分布式和JVM这些,若是想进大厂且薪资高的话,这两个知识点是必学要弄清楚的。还有就是你的我的看法了,这些都是很是重要的了。废话很少说,你们往下看个人近期总结学习心得,继续往下看干货...........
(若是想和做者同样系统化的学习面试真题后面的架构体系图,你们能够加文章末尾的群号,里面有学习资料,加群备注便可领取。我只能帮大家到这里了。我也在群里,但愿和你们共同窗习进步。)
我认为三年对于程序员来讲是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,咱们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。咱们知道如何团队协做、如何使用项目管理工具、项目版本如何控制、咱们写的代码如何测试如何在线上运行等等,积累了必定的开发经验,也对代码有了必定深刻的认识,是一个比较纯粹的Coder的阶段。
五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工做,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码以外,还热衷于研究各类技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具有在技术上独当一面的能力而且清楚本身将来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。
十年又是另外一个门槛了,转行或是继续作一名程序员就在这个节点上。若是在前几年就抱定不转行的思路而且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深刻认识、对技术有着深刻认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于本身绝对是一件荣耀的事,固然老板在经济上也毫不会亏待你。
我认为,随着你工做年限的增加、对生活对生命认识的深刻,应当不断思考三个问题:
最终,明确本身的职业规划,对本身的规划负责并为之努力。
1.愿意学习新技术
随着技术的不断进步,咱们学到和实施的技术会很快地过期。因此,做为一个程序员,你就须要更新你的技能,保持与时俱进。市场上出现的所谓新技术一般由一些进程和语法变化而构成,但逻辑是相通的,因此你能够很快地掌握它。
2.调试技巧
程序员不但须要建立代码,并且当软件不按预期方式工做时,程序员还必须可以快速而有效地解决问题。
所以,与其更改全部代码,还不如在建立程序时制做适当的流程文档,以便你能够快速检查代码并尽快找到问题。制做正确的文档能够方便你快速调试程序,而不浪费时间。
3.解决问题的技巧
当一名普通的程序员得到项目/模块时,他们会直接写代码。但一名成功的程序员会试图找出代码出现问题的根源,并通知团队领导或项目负责人。由于有时在文档化项目需求并启动项目后,或者甚至在完成项目后,咱们才会在项目中遇到一些问题。因此最好在出现问题以前先找到问题。
此外,快速地找到解决问题的方法。
4.对工做的热情
咱们的工做时间大多为朝九晚五,可是当你对工做迸发激情时,那么不要到了休息日就将工做束之高阁。一直工做直到完成它。固然,个人意思不是说若是你没有解决方案,还得整天垂头丧气对着电脑,个人意思是若是你已经接近于完成的时候,那么索性一气呵成搞定吧。
你的经理或高层将会欣赏你的工做,而且当你有一个良好的环境时,你的激情将会愈加高昂。
另外,在没有工做的时候也不要无所事事。不妨尝试构建一些新的应用程序,如游戏,拼图,聊天应用程序等,这将有助于使你更加热爱你的工做。
5.懒惰…个人意思是更高效!
当有不少任务而且快没有时间来完成项目的时候,这时只有懒惰的程序员才能找到更好和最快的解决方案,由于他很是了解如何才能事半功倍。
若是你想找到作事的最好方式,那么就去问懒惰的人;不少时候这些所谓的懒人会找到最好、最快和最有效的方法,由于他们总在试图寻找更高效的路径方法。
你们以为文章对你仍是有一点点帮助的,你们能够点击下方二维码进行关注。 《Java烂猪皮》 公众号聊的不只仅是Java技术知识,还有面试等干货,后期还有大量架构干货。你们一块儿关注吧!关注烂猪皮,你会了解的更多..............