专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

(2)Redis 部分

  • Redis的应用场景

  • Redis支持的数据类型(必考)

  • zset跳表的数据结构(必考)

  • Redis的数据过期策略(必考)

  • Redis的LRU过期策略的具体实现

  • 如何解决Redis缓存雪崩,缓存穿透问题

  • Redis的持久化机制(必考)

  • Redis的管道pipeline

(3)Mysql 部分

  • 事务的基本要素

  • 事务隔离级别

  • 如何解决事务的并发问题(脏读,幻读)?

  • MVCC多版本并发控制?

  • binlog,redolog,undolog都是什么,起什么作用?

  • InnoDB的行锁/表锁?

  • myisam和innodb的区别,什么时候选择myisam?

  • 为什么选择B+树作为索引结构?

  • 索引B+树的叶子节点都可以存哪些东西?

  • 查询在什么时候不走(预期中的)索引?

  • sql如何优化?

  • explain是如何解析sql的?

  • order by原理

(4)JVM 部分

  • 运行时数据区域(内存模型)

  • 垃圾回收机制

  • 垃圾回收算法

  • Minor GC和Full GC触发条件

  • GC中Stop the world

  • 各垃圾回收器的特点及区别

  • 双亲委派模型

  • JDBC和双亲委派模型关系

(5)Java 基础部分

  • HashMap和ConcurrentHashMap区别

  • ConcurrentHashMap的数据结构

  • 高并发HashMap的环是如何产生的?

  • volatile作用

  • Atomic类如何保证原子性(CAS操作)

  • synchronized和Lock的区别

  • 为什么要使用线程池?

  • 核心线程池ThreadPoolExecutor的参数

  • ThreadPoolExecutor的工作流程

  • 如何控制线程池线程的优先级

  • 线程之间如何通信

  • Boolean占几个字节

  • jdk1.8/jdk1.7都分别新增了哪些特性?

  • Exception和Error

(6)Spring 部分

  • Spring的IOC/AOP的实现

  • 动态代理的实现方式

  • Spring如何解决循环依赖(三级缓存)

  • Spring的后置处理器

  • Spring的@Transactional如何实现的?

  • Spring的事务传播级别

  • BeanFactory和ApplicationContext的联系和区别

(7)其他部分

  • 高并发系统的限流如何实现?

  • 高并发秒杀系统的设计

  • 负载均衡如何设计?

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

Share2:苏宁开发三年,我如何积累经验?

======================

(1)善于利用碎片时间,学习提升自我

从初级程序员升到资深开发,没有别的捷径可走,从始至终我都奉信:进步得靠学习,学习得靠时间堆砌。现在互联网行业基本上都是996趋势,程序员加班情况更为明显,所以利用碎片时间来学习,才是提升自己最合适的方式。

先算算我个人的学习时间账(可参考,可借鉴):

  1. 每天早上起床后,大概30min(上厕所,吃早餐,通勤等)

  2. 每天上班时,利用别人划水的时间搜一些技术资料,逛逛技术博客,约30min。

  3. 晚上通勤、吃饭(这个阶段我一般会休息+娱乐来调整自己状态,刷刷微博、朋友圈)

  4. 晚上到家后,不管再累都会抽出1~2个小时来学习,看书+看视频。

*这样计算下来,一天大概平均在2~3小时,一周5天至少10个小时,不包括周末。

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

(2)解决Bug积累经验(提升自己优化能力)

论坛上流行一种说法:大部分的程序员都是通过BUG来积累经验的,你解决的每一个BUG都是你的经验。

实际上,这观点并不在强调BUG的重要性,而是意味着程序员可以通过改Bug来提升自己的优化能力,但这个“改”就非常关键了。

如何“改”?

  1. 我在开发过程中,总会遇到大大小小的问题,在遇到问题时,我首先考虑的是凭自己个人的能力去解决,会看一下相关的源码,或者Google一下相关的资料或技术博客。如果问题太大,实在解决不了,就会去请教大佬,不会纠结来纠结去,浪费时间还没效果,耽误自己的项目进度。请教大佬也有讲究,不是让他直接帮你解决好问题,而在是建议或思路的基础上自己去思考。

  2. 另一层意思则是需要我们主动地去提升自己的优化能力了。我在写代码的过程中,会主动地引入面向对象思想和设计模式;会考虑性能优化(如何让sql语句更快,如何让虚拟机内存性能更好);在“单机版”程序的基础上问自己,如何搭建集群?如何利用现有的面向集群的组件?(比如可以用Eureka搭建服务治理的集群,在集群中用Ribbon做负载均衡)

  3. 最后,技多不压身,还要学一些redis,消息中间件,JVM调优,MySQL优化以及Spring Cloud方面的内容。

(3)参与开源项目

其实,在很多面试攻略和分享中,我们都能get到一个信息:参与过开源项目的面试者往往更吃香,更容易获得offer。

那么,为什么参与过开源项目的程序员会更吃香更抢手呢?

  1. 大型的开源项目几乎都是大型团队构建的,且非常复杂,由此可以推断出你个人的能力和素质都是过关的;

  2. 开发开源项目,说明个人的综合能力得到极大提高,这些能力包括“书面沟通能力”、“了解如何挑选和协商要处理的事情”、“完善Git流程/GitLab流程”、“理解语言语法”等等;

  3. 其他:建立线上声誉、保持个人的进步的动力等等。

(4)提升自己的软实力,让自己更专业

按照我个人的理解来说,初级程序员更像学生,而高级程序员则需要拥有“独当一面”的能力,而这个过渡是需要时间的,也是我前两年来努力的方向之一。

提升自己的软实力,成为更专业的程序员:

  1. 要学会积极主动沟通;

  2. 提升自己解决问题(bug)的能力,积累解决问题(bug)的经验;

  3. 协调(扯皮)的能力:工作方面积极主动协调部门;

  4. 学会合作,一起完成一个任务或目标。

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

Share3:5年经验如何跳槽阿里?

==================

Step1:知己知彼(了解岗位职责,规划职业成长路径)

①岗位职责

求职时,我们往往更注重简历,却忽略了“岗位职责”这个关键词,实际这往往也会影响到我们的面试结果。

俗话说“知己知彼,百战不殆”,岗位职责非常清晰明确地标注了应该干什么,怎么干,干到什么标准,对于程序员来说,技术掌握程度以及之后的开发内容都要了解清楚。

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

随便找的公司为例,就更不用说BAT一线大厂了

②成长路径

在第一次正式工作后,我就非常认真仔细的思考过自己日后的发展方向,实际上程序员的成长轨迹(晋升路径)越早确定越好。程序员的方向大致分为技术岗和管理岗,而这两个方向所看重的能力还是有很大本质区别的。

成长路径如下:

  • 管理岗:初做者→技术经理→技术总监→副总裁→总裁

  • 技术岗:初做者→高级工程师→技术专家→领域专家→领域权威

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

Step2:制定目标(制定明确的、可衡量的、可达到的、有时间限制的目标)

在职场中,一定要制定自己的的目标,这样才不免被沦为“咸鱼”,想要快速晋升,就得从目标下手,目标需要满足SMART原则:

  • 具体的(Specific)

  • 可以衡量的(Measurable)

  • 可以达到的(Attainable)

  • 具有相关联性的(Relevant)

  • 有明确的时间截止的(Time-based)

简单来说,我的操作就是将自己的目标进行阶段性的拆分,比如我1-3年需要达到一个什么阶段,3-5年要达到什么阶段,然后在这个阶段里继续进行拆分,树立一个一个小目标,然后构成一个大目标,总目标,这样就会容易达到得多了。

Step3:善于思考(培养逆向思维、优化思维)

不想机械式的码代码,快速晋升之道首先就要转变自己的思维,要开始慢慢调整,善于思考一些问题,培养逆向思维和优化思维。

所谓的逆向思维,就是要多问自己为什么?如:

  • 为什么需要这些数据?

  • 为什么要做这些事?

  • 为什么要做总结?

  • 为什么要做规划?

  • 为什么要做代码审核?

而优化思维,则是把事情做得更好,即使是繁琐杂事,也有优化的空间,包括效率和效果,任何事都是有优化空间的,缺少的是发现的眼睛。

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

Share4:如何提升阿里社招面试通过率?

=====================

(1)准备简历

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

[外链图片转存中…(img-cIJcfTqd-1713568559046)]

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-to10T5xm-1713568559049)]

搜集费时费力,能看到此处的都是真爱!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值