洛阳网站建设优化案例,软件开发工程师学校,wordpress能用一个数据库,菜单网站图片素材本文是公众号读者jianfeng投稿的面试经验恭喜该同学成功转型目录#xff1a;毅然转型#xff0c;没头苍蝇制定目标#xff0c;系统学习面试经历毅然转岗#xff0c;没头苍蝇首先#xff0c;介绍一下我的背景。本人坐标广州#xff0c;2016年毕业于一个普通二本大学#…本文是公众号读者jianfeng投稿的面试经验恭喜该同学成功转型目录毅然转型没头苍蝇制定目标系统学习面试经历毅然转岗没头苍蝇首先介绍一下我的背景。本人坐标广州2016年毕业于一个普通二本大学曾经在某机构培训过Android。2018年初的时候已经在两家小公司工作干了两年的android开发然后会一些Tomcat、Servlet之类的技术当时的年薪大概也就15万这样子。由于个人发展规划在当时就已经决定了转型干Java后端开发了但是由于之前没有相关经验当时好像一个没头苍蝇一样胡乱买了几本书籍准备学习Spring MVCMyBatis的XML配置方式。但是当时有个同事给我提了一句现在都流行Spring Boot了然后我就转学Spring Boot百度网上看了几篇文章写了几个Demo就以为自己很吊了。接着又从同事的那里得知还有个Spring Cloud的东西现在很流行。然后又转战Spring Cloud同样看了几篇博客写了几个demo之后觉得自己叼的不行~(汗颜)接下来还是熟悉的套路同事说jenkins很吊docker很吊、k8s很吊呀还有什么领域驱动模型DDD啊被牵着鼻子走。反正听到别人说那个牛逼就学习那个但是每个技术都是demo入门级别的掌握水平。我当时甚至连Controller/Service/DAO/Mapper、DO/DTO/VO之类的基本常识都不会。制定目标系统学习这一切的转折点在2018年5月当时觉得这又搞一下那又搞一下不行啊。没有系统的学习各种东西都掌握的不好。于是沉下心来开始进行系统的专题性学习并且自己定下对每个技术的学习目标。官网文档开始先掌握其基本用法然后跑通最基础的demo之后基于这个demo一步步调试读懂其底层源码边读边写笔记这个过程及其漫长和煎熬。在这个过程中我疯狂的搜索了各种视频教程博客公众号各种途径都用上了。给我的感觉是确实有视频、博客讲的挺好但是极少。很多讲的还是比较浅点到为止。此时需要我们自己进一步深入到源码层面研究一点点啃一点点摸索边啃边记笔记。在这一段时间利用了很多业余时间学习基本上可以保证工作日每天学习2~3个小时周末每天平均12小时。可能这块大家不是很相信大家都是上班为什么我就有时间学习呢。我要说的是时间是自己控制的可以利用坐地铁时间或者午休时间就这样准备了大半年截止2019年3月因为对于当前公司的业务场景和薪资不太满意所以忍不住想出去跳槽了。在这个过程中尤其前期我经历了至暗时刻摸索学习源码几近崩溃如同黑暗森林一般。有的源码我反复读了不小5遍画图、记笔记一遍遍的强化总结。然而正是这段时间我的整个知识栈飞速扩张并且因为我学完一个东西都会自己画图一步步给自己讲解。这种学习方式让我对新东西的掌握及其扎实效果比那种泛泛而学好很多。在这大半年的时间里学到了包括以下内容Java基础JDK集合、并发包内容这些基本上都是研究到底层源码了。比如volatileAQS之类的已经到了熟练于心随时可以手工画图的地步。同时专门去学习了设计模式并且可以初步尝试在公司项目中使用。微服务架构现在比较流行的微服务架构这一块选择了学习比较热门的Spring Cloud。将Spring Cloud的Eureka/Ribbon/Feign/Hystrix/Zuul这些套件深入理解其源码实现对其底层源码熟烂于心。 分布式技术比如一些分布式事务分布式锁分布式接口幂等性分布式基础理论CAP之类的东西这些也要掌握它们的场景以及对应的解决方案。这里说一下其实本人就职的公司并没有这些挑战甚至是单机系统但是这一块的技术方案其实是可以平时用自己公司项目来设想一下设想做成分布式之后会面临什么问题应该怎么解决。ps顺便提一下这块本人是受了石杉老师的文章【offer收割机必备】我简历上的Java项目都好low怎么办的启发也推荐大家看一下在公司没有高大上的高并发项目时应该怎么应对IO、网络基础这一块个人觉得还是很重要的比如一些网络基础Linux IO模型Java里面的BIO、NIO、AIO、这些内容其实还是很有必要掌握的。ElasticSearch这个是分布式搜索引擎目前大热一般互联网公司都或多或少用到了es这一块是需要对其分布式架构原理搜索原理都搞的门儿清才行。缓存、MQ因为面对高并发场景缓存MQ这两块也是必问的所以专门看了一些缓存架构实战的视频教程。对于MQ的话专门对RabbitMQ、Kafka这两种深入研究。 项目经验项目经验这一块是硬伤确实来说这一块在原来公司里面不是很大的场景。高并发这一块平时确实积累不到很多知识只能通过想象当系统遇到的并发量提升10倍、100倍的时候系统应该如何设计当遭遇到高并发流量时用一些什么样的方案可以支撑采用缓存还是MQ采用了之后又什么坑又如何解决这一块需要自己深度思考一些细节问题。 数据结构、算法这一块没啥好说的就是靠平时积累以及leetcode刷题。我刷了几十题这样加上平时积累的一些数据结构也是比较够用的。除此之外在面试前还突击了一下那些场景的面试题包括MQ、Mysql、分库分表、之类的常见互联网面试题。这一块主要是看了石杉老师的《Java面试突击第一季》教程如果你要短期突击个人真的非常推荐因为可以迅速帮你补充面试的各种技术点。ps个人非常感谢中华石杉老师的几套课程《亿级流量系统架构》、《elasticSearch从零开始到顶尖高手》、《Java面试突击第一季》如果你能从头到尾吃透这里面的东西正常的面试根本拦不倒你除此之外石杉的架构笔记公众号很多精品文章也让我受益良多比如公众号的并发系列、分布式系列、微服务系列。文章分析了很多面试高频热门考点我在面试时很多问题都直接命中。因此我将自己的面经投稿到平台希望分享给更多朋友。同时也是对石杉老师表示感谢希望公众号越做越好有点跑题。。。喝杯水继续看到这里可能部分同学觉得不可能在不到一年的时间里从一个啥都不懂的小白做到能熟练掌握这么多东西的我想说的是每个人的情况不一样我这边学习一个东西起码是经过5遍之后才能熟练记住有的甚至看了不下10遍反复的画图操练自己对自己讲解。所以最重要的是肯花时间去学习。甚至我可以透露一下我除了学了这些之外我还学习了一些大数据的技术比如Hadoop的HDFS、Kafka源码、Spark开发、Storm之类的面试经历接下来说下我的面试经历在面试之前本人基于职业发展的考虑投简历基本上都是瞄准比较有点知名度的互联网公司。 面试策略一开始也是想先找几个小公司面面看试试水。但是好像今年行情确实不怎么样往往投了很久没啥反应。后面一咬牙干脆直接投心仪的公司后面通过投简历和内推的一些手段拿到了5家公司的面试邀请。我这边面试的仅有5家公司这些公司的面试套路基本上都是差不多。1面问基础二面问项目3面hr某汽车服务平台拿到offer首先面试题是有一些算法的比如让你写一个递归算法还有一些二分查找之类的题目总体来说还算比较简单的算法题了。1面的时候基本上就是自我介绍然后问问比较熟悉那一块然后讲了一些AQS原理。当时是手工在纸上画图的。给面试官讲完AQS之后又让我把话题扯到了volatile这一块我就从CPU内存模型、Java内存模型然后结合CPU高速缓存的数据结构讲解一下可见性问题是如何出现的。之后又问了一些分库分表的事情HashMap的原理。 2面的时候是总监面主要是上来就问了自己有没有遇到到线上full gc还有一些JVM内存划分GC收集算法垃圾回收器之类的知识。然后讲一下自己看过啥源码然后围绕着项目问了一些问题比如说你遇到过最大的挑战是什么3面就是hr了这一块主要就是问一问离职原因(钱太少咯)然后其他就是问一下职业规划这块按照自己想的说就行了。最终的结果是拿到了25万的offer。总体来说这家公司的面试过程相对比较简单一些。某跨境电商公司挂掉第二家公司主要做跨境电商是通过内推拿到面试机会的。这里面了2轮。技术面试面试官问的算是比较全面了首先自我介绍然后就开始技术问题HashMap原理synchronized和ReentrantLock有什么不同AQS原理线程池的各个参数作用Spring Boot如何实现AutoConfig?还问了CurrentHashMap这一块原理接着是问MQ用RabbitMQ他们有几种exchange消费者推拉模式有什么区别为什么用MQ然后到了Redis这一块缓存穿透、雪崩、击穿各种场景的问题以及解决方案redis为啥速度快以及Redis Pipeline相关的一些问题。然后又问Mysql了mysql的索引原理是啥?然后mysql的执行引擎有几种有啥区别事务隔离级别线上数据库用什么级别隔离Transactional有什么关键参数针对分布式场景下的事务解决方案是如何实施落地的TCC事务、还有一些可靠消息方案针对你公司的业务场景讲解清楚然后详细问每一个细节是如何落地的这样会不会出什么问题接下来还讨论到分布式比如说分布式锁啊zk和eureka有什么不同CAP理论这一块还有画出项目架构图。Zuul线上怎么配置。2面hr面这一块也聊了挺久主要也是问一些职业规划啊还有工作意愿之列的介绍一下原来工作情况这样。最终是让回去等通知。当晚通过内推的人知道被淘汰其实在面试完本人也是觉得有机会的不过最终却是淘汰了也没什么好说的我觉得问的问题80%都答得挺好的。总的来说这次面试还是可以的问的算是比较全面的自己也知道自己哪一方面不足。查漏补缺某少儿在线教育公司 拿到offer这家公司技术总体来说还是非常可以的3面都是技术老板也是技术出身兼了hr的工作。1面主要让你画出线上的项目架构图然后针对分布式事务缓存架构并发之类的都问了。比如说分布式事务还有一些Spring Cloud的底层原理Hystrix原理CAS底层如何实现的HashMap的原理AOP如何使用的事务有几种实现方式RabbitMQ如何控制消费速度。2面的也面的比较全面也是问了一些AQS原理volatile原理synchronized底层原理HashMap原理针对Redis和ZK两种分布式锁的一些问题还有一些Mysql优化索引底层数据结构还有就是公司部署的时候是服务部署多少机器是如何考量应该用多少机器然后使用到Redis为什么上来就用Redis cluster架构而不考虑Master-slave模式呢还有redis cluster为什么是分为16384个slot红黑树和完全二叉树有啥区别B树原理、为什么不用红黑树实现索引线上如何扩容集群Mysql执行计划snowflake算法如何解决分库分表后的跨表join问题那些场景使用了tcc事务哪些场景使用了可靠消息方案然后让画一下Hystrix的架构原理图分布式接口幂等性如何保证如何设计一个1000万并发的系统要求只能用有限的资源还有就是一些项目管理的问题。 3面问了一些ArrayList的问题然后问了Spring IOC有什么作用还有就是mysql在表数据量非常大并且数据单一的情况下如何优化查询性能 总结这家公司最终给了25万的offer。总的来说面试官也算很nice了问的问题比较全面基本上项目java基础、mysql、事务、mq、缓存都有涉及到也算是测出了我的水平。公司属于比较技术性可能是因为老板也是技术出身的原因吧。某职业教育公司拿到offer这家公司纯粹就是混混经验的面试过程也是1轮技术1轮hr技术面试: 基本上就是围绕Spring源码MyBatis设计思想还有一些分布式事务的问题。。。然后还问了一些大数据类的问题HDFS、HIVE之类的问题。然后就是问了一些项目的问题。总的来说问的比较少东西。 hr面2轮直接hr然后hr可能是得到1面面试官的反馈吧当场给我offer。但是说我这个工作年限(2016年毕业)正常来说是15万年薪的因为我技术好给到25万但是30万是不可能了(我当时写期望是30万的) 某智能汽车平台 挂掉1面2个面试官一起面主要是围绕项目来问首先画一下自己的项目架构图然后问一下你觉得项目里面那一块比较有挑战性。我就分析了一下Spring CLoud的源码、还有分布式接口幂等性方案分布式锁分布式事务的一些方案都讲解了。然后还问了一些比如说新旧系统的数据库如何迁移啊然后怎么做的灰度发布啊主要都是围绕者项目来问这一块其实没有问的多深入。2面也是技术面主要是问了一些项目的问题问我做商品服务的电商详情部分是不是我搞的我说了一些缓存架构的东西三级缓存数据库缓存双写一致性方案Cache Aside Pattern分析了数据库缓存的数据不一致的问题然后给出了解决方案还有如果多个实例如何确保正确这样又扯到了分布式锁分别讲了一下Redis的分布式锁和zookeeper的分布式锁对redisson、curator的底层原理分析了一波。最后等了十几分钟二轮面试官说负责人出差北京了让回去等通知。最终等了2天也没啥通知暂且认为是失败了吧。 总的来说面试了5家公司拿到了3家公司的offer战绩还算可以。另外的话还有一些面试的技巧。我觉得最重要的是自己要有信心面试失败了难免会气馁但是这个时候不要灰心赶紧回去查漏补缺然后把知识补起来。另外面试的时候如果面试官问道一个问题要主动带节奏。举个例子比如问到了AQS的实现原理你就可以首先画个图说明一下AQS底层是如何实现的然后扯到底层的state变量是volatile的然后对于volatile又可以扯出可见性有序性原子性然后扯到了Java内存模型CPU内存模型还有高速缓存的一些硬件实现啊MESI协议。以及它是如何通过指令、内存屏障来保证可见性的。 我举这个例子的意思就是说面试官问到一个问题如果了解其底层原理就主动说你看过xx的原理跟他说一下。这样可以让面试官对你的印象更加深刻。当然了这一切都是需要自己有很扎实的计算机基础还有对某些技术研究的比较深入才能达到的。最后我还是选择了上文中第一家汽车服务平台因为几家公司给的年薪都是25w然后我选择的是最有挑战场景的电商类公司对于技术成长会比较有好处。 最后我想说的是其实我算是半路出家做Java开发的了付出了很多时间和努力走过不少弯路但也收获了不少东西。我这里不想给各位拼命打鸡血灌鸡汤个人认为技术积累的过程注定孤独甚至黑暗且周期漫长需要你有足够强的毅力和想改变自己的内驱力。希望咱们都可以通过不懈的努力实现自己的梦想。我行你也行的一起加油END个人公众号石杉的架构笔记ID:shishan100欢迎长按下图关注公众号石杉的架构笔记公众号后台回复资料获取作者独家秘制学习资料石杉的架构笔记BAT架构经验倾囊相授