励志!一年时间,从小白到进入阿里核心部门,“他”的逆袭之路

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 注明:这是一个励志老哥给我分享的个人经历,发本文的目的是为了让大家可以参考他的学习经历,提高自己的能力!当然人外有人天外有天,大神也别打我!再次说明,我只是为了能够帮助迷茫的兄弟们!接下来以他的第一视角为大家讲述他的经历。

注明:这是一个励志老哥给我分享的个人经历,发本文的目的是为了让大家可以参考他的学习经历,提高自己的能力!当然人外有人天外有天,大神也别打我!再次说明,我只是为了能够帮助迷茫的兄弟们!接下来以他的第一视角为大家讲述他的经历。

网络异常,图片无法展示
|

可能故事有点长,大家是想听故事还是直接听我讲我学了什么,怎么学习的。

好吧,进入实验室的过程我就不细说了,最后选了两个人,一个就是我!!

进去的第一个项目是做一个javase的桌面项目,我和同伴负责的是写界面。

当时就觉得有机会写真正项目就已经很开心了,根本不考虑写什么,就算写写界面我都很高兴。

在写界面的时候,第一次用了HashMap,是师兄教我们用的,,当时觉得好厉害,对师兄一直处于崇拜当中。(对!当时就是这么菜,HashMap都不知道)

现在回头看看自己的代码,全是面向过程的,怪不得师兄们不叫我写其他的。真的是菜的不行。

好吧,java初级就算完成了。当时这个项目也是全部写的界面,所以完全就没有锻炼到什么(实际上还是有的,比如说SVn)。这个时候我处于的阶段就是,java一知半解,mysql语句都要一边查一边写才能写出来。

这个时候我的时间就比较闲了,在询问过师兄之后我决定利用书籍来提高自己,这段时间我看的书有(大概一个月),《java核心技术,卷一》,《java编程思想》(目前仍然看不懂)。jsp,servlet在自学当中。

最要是看《java核心技术》,当时我只看得懂这个,然后把上面的代码大概的敲了一遍,后来我又用servlet开发了自己学校的威信平台,都是很简单的功能。

我先列一下我看过的书单:

《java核心技术,卷一》,

《java设计模式》,

《java编程思想》,

《深入理解jvm原理》,

《编程之美》,

《剑指offer》,

《深入分析javaweb,技术内幕》,

《深入分析spring技术内幕》,

《分布式Java应用:基础与实践》,

《hadoop技术内幕》。

但你们不知道学什么的时候就看看这张图,我觉得很有帮助,接下来说说我的学习方法。

楼主的观点是:如果你想提高自己的水平,一定要和优秀的人交流,学习他们的思维方式和处事能力。感知他们的气场,看看比你优秀的人在干什么!!

如果你发现比你优秀的人还比你帅还比你努力,那你就真的是个loser

当然楼上说的是做人方面,我现在说说技术吧。

基础:这是非常非常非常非常重要的,只要基础好了,框架什么的你自己都能写,还学什么框架(学框架更加快),那什么属于基础呢?我觉得有以下东西,数据结构、计算机网络、数据库、操作系统。这是计算机基础,在java的话,我觉得应该是,IO,NIO,并发(包括concurrent包下的),集合框架(理解原理,多看看源码),反射。面对对象的思想,OOP,OOA,OOD。JVM,JMM(这两个虽然实战经验很少,当时一定要去学习了解一下你就知道什么时候用volatile什么时候用sync)。

提高:在基础上面如何提高自己呢?我们有基础之后,我觉得需要学习设计模式,深入的学习数据库(包括,索引原理,ACID,事务隔离机制,触发器,存储过程等等,数据库的锁机制,行锁,表锁,悲观,乐观,),在这个阶段要学会看看源码,把IOC,AOP的原理弄清楚,Spring是怎么找到bean,怎么加载。怎么解析等等,。当你遇到此类问题,你可以马上就找到问题在哪里,这就是看源码的好处。Aop也不能只是了解动态代理的原理,还要知道什么是aspect,pointcut等等,为什么AOP联盟要定义这些接口…这个时候你就要知道什么是解耦合,什么是高类聚。怎样让代码变得可重用行和扩展性更高,设计模式带给你的好处将是质的变化。

深入:其实到这里都是看自己了吧,了解什么是SOA,OSGI。什么是分布式(分布式数据库,分布式文件系统),负载均衡(lvs,Ngnix等)。了解云计算,了解实时计算。知道spark,hadoop,storm。什么是虚拟化技术。这方面我也只是入门,不敢多写!

平常怎样学习:

1、给自己定下目标。

2、多看看好的博客。

3、多了解新的技术(就算你不是学前端的你也要知道前端貌似有个AngularJS,扩宽眼界)

4、多写代码、

5、少去java吧水

6、坚持!!!!!!!!!!!!!!!!!!。

送大家一句话:越努力,越幸运!

收集一些阿里巴巴招聘的题目(都是最近周围同学的面试经验)

java后台方向NO1:

1.Arraylist和linkedlist的区别及原理

2.常用的IO有哪些,io框架用的什么设计模式

3.vector和arraylist有什么区别

4.怎样创建一个线程,用什么启动

5,4个窗口,20个人怎样保证并发,说说ConcurrentHashmap原理

7,两个数组一个100长度,一个101长度,前一个是后一个的子集。怎样找出多出的一个数

8,了解NIO吗?说说优点

9,JSP 9大内置对象

10.看过哪些书籍,说说作者和书的名字

11.分布式节点内部通信机制

12,说说你的框架,怎样理解MVC的

13.知道网络编程吗?说说分布式。

14,说说你的网站架构,SOA管理方式,什么是webservice

15,什么是RPC框架,有什么优点

16,你平常是怎么学习的

17.团队是如何管理的,你处于一个什么位置

18,怎样协调团队矛盾

20,介绍你的项目,分布式数据库怎么分表,用的什么中间件

java后台方向NO2:

3.对中间件的了解

4.平时从哪里学习这些技术

5.遇到技术问题如何解决,举nginx负载的例子。。

6.怎么读源码,说了一下nginx内存池的实现

1.mysql连接池作用,实现

3.怎么预防死锁,出现死锁怎么解决

4.常见设计模式和其运用

1.你是怎么设计数据库的

2.数据库索引有哪些 索引基于哪些类型实现

3.你是怎么根据索引去数据库优化

4.GC root

5.事务

6.ConcurrentHashMap HashMap(这里讲了下ConcurrentHashMap源码,及JAVA中锁的实现原理基于AQS,AQS原理,基于CAS实现)

7.对了,还有JMM volatile原理

1.JTA实现原理(onepc two pc three pc) :二阶段提交出现的问题,就说了一下加入observe,后面讨论了下二阶段提交的脑列问题

2.Spring (这里讲了一下自己的IOC) 分析了一下AOP

3.讨论了支付宝抢红包的采取了哪些优化,事务基于几阶段提交…

2.负载均衡 LVS与ngnix区别

3.其他的都是一些学习方法方面的。。

1.在项目中用过哪些设计模式。解决了什么问题。优缺点。

2.表设计 三范式,反范式

3.事务 银行转账例子。。 a和b不在同一个库里面的事务设计。mysql怎么做。自己写代码怎么实现

4.Nginx 负载 介绍反向代理的概念 负载常见算法

5.负载多服务器之间如何通信。

6.高并发问题 双十一,你觉得哪个会先挂。。我说的是mysql。怎么解决。

1.计算机网络七层模型,TCP三次握手

2.说说常见的TCP应用

3.说说常见的linux命令

4,JVM的垃圾回收,volatile 机制,内存模型

5.string,stringbuffer,stringbuilder的区别,ArrayList,linkedList 的差别 查找 删除的时间复杂度。

6.Spring AOP,IOC

7.HashMap源码,线程池框架源码

8.常见的设计模式并说明用处

IO模型有哪些?

进程线程的区别

不同操作系统实现进程怎么样

gc算法,回收器有哪些

ACID。事务隔离机制

syn在方法上和代码块有什么不同

memcached和其他nosql不区别

解释mvc

threadlocal解释

volatile的作用

堆和栈的区别和联系

tcp和udp的不同之处

tcp如何保证可靠的

数组和链表的区别

排序算法应用场景

lucene全文检索原理

浏览器输入http://www.baidu.com,整个流程

分布式缓存,一致性HasH算法,memcached内存结构

tcp三次握手

tcp滑动窗口解释

SSO单点登录

数据库分表,分区

IO:将对象转换为文件实现什么接口

反射:反射是哪一个类 有些什么方法 通过反射获取方法时,能获取private的方法吗?protected?

servlet:流程 服务器和session的联系 cookie和session的区别

springmvc:流程 处理请求是哪一个类,有些什么方法,它实现了什么接口

spring:两个特性解释 哪些地方用到aop 声明式事务管理的步骤(每一步相关的类)

数据库:分页的sql 还有个什么sql忘了 left join和right join的区别

集合框架:collection下面有什么 arrayList和linkedList区别 结合hashmap源码分析hashmap

jvm原理 classloader 堆栈区别 堆栈原理

垃圾回收机制工作原理 当对象不再调用,就进行回收吗还是怎样 System.gc执行后,直接进行回收吗还是怎样

tcp/ip区别 一个方法要同步怎么办 怎样实现线程

抽象类和接口的区别(这里问得很细) 抽象类和普通类的优缺点

memcached原理 流程 它的分布式算法 缓存策略

还有算法 快速排序

最后历年来阿里面试题目相关知识点分享:

由于文案限制,本文所提到的阿里巴巴Java面试笔记+1000道互联网工程师485页+Java高级面试知识点

网络异常,图片无法展示
|

分布式

  • 一、大型网站系统的特点
  • 二、大型网站架构演化发展历程
  • 三、拆分 VS 集群
  • 四、微服务 VS SOA
  • 五、前后端完全分离与Rest规范
  • 六、CAP三进二和Base定理

网络异常,图片无法展示
|

中间件

  • 一、缓存
  • 二、消息队列
  • 三、搜索引擎

网络异常,图片无法展示
|

大数据与高并发

一、秒杀架构设计

二、数据库架构发展历程

三、MySQL的扩展性瓶颈

四、为什么要使用NOSQL NOT ONLY SQL

五、传统RDBMS VS NOS QL

六、NOSQL数据库的类型

七、阿里巴巴中文站商品信息如何存放

八、数据的水平拆分和垂直拆分

九、分布式事务

十、BitMap

十一、Bloom Filter

十二、常见的限流算法

十三、负载均衡

十四、一致性Hash算法

网络异常,图片无法展示
|

数据库

  • 一、数据库范式
  • 二、数据库开发规范
  • 三、数据库索引
  • 四、MyISAM vs InnoDB
  • 五、并发事务带来的问题
  • 六、事务隔离级别及锁的实现机制
  • 七、MVCC(多版本并发控制)
  • 八、间隙锁与幻读

网络异常,图片无法展示
|

设计模式与实践

  • 一、OOP五大原则SOLID
  • 二、设计模式
  • 三、代理模式
  • 四、面向切面编程(AOP)
  • 五、工厂模式
  • 六、控制反转IOC
  • 七、观察者模式
  • 八、Zookeeper

网络异常,图片无法展示
|

数据结构与算法

一、树

二、BST树

三、BST树

四、AVL树

五、红黑树

六、B-树

七、B+树

八、字典树

九、跳表

十、HashMap

十一、ConcurrentHashM ap

十二、ConcurrentLinked Queue

十三、Topk问题十四、资源池思想

十五、JVM内存管理算法

十六、容器虚拟化技术,Doocker思想

十七、持续集成、持续发布,jenkins

网络异常,图片无法展示
|

面试题举例

  • 一、设计一个分布式环境下全局唯一的发号器
  • 二、设计一个带有过期时间的LRU缓存
  • 三、设计一个分布式锁
  • 四、设计一个分布式环境下的统一配置中心
  • 五、如何准备HR面试

网络异常,图片无法展示
|

面试宝典大合集

网络异常,图片无法展示
|

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
机器学习/深度学习 自然语言处理 算法
基于深度学习的语音识别技术应用与发展
在当今数字化时代,语音识别技术已经成为人机交互领域的重要组成部分。本文将介绍基于深度学习的语音识别技术在智能助手、智能家居和医疗健康等领域的应用与发展,同时探讨该技术在未来的潜在应用和发展方向。
386 4
|
11月前
|
JavaScript 开发者 UED
数据驱动方式的优缺点
【10月更文挑战第13天】 数据驱动是软件开发中,特别是在 Vue 等框架中的一种重要理念。它通过数据绑定简化代码结构,提高开发效率和可维护性,增强用户体验,促进团队协作,并提升性能和灵活性。然而,也存在初始学习成本高、数据绑定复杂、内存管理问题及调试难度大等挑战。总体而言,数据驱动在现代应用开发中具有显著优势,但也需谨慎应对潜在问题。
|
Java Android开发 iOS开发
深入探讨移动操作系统的性能优化:安卓与iOS的对比分析
在现代移动设备中,操作系统的性能优化至关重要。本文从系统架构、内存管理、电池续航和应用程序运行效率等多个维度,深入探讨了安卓(Android)和iOS两大主流移动操作系统的优化策略及其实际效果,旨在为开发者和用户提供更清晰的了解和选择依据。
956 27
|
人工智能 IDE 测试技术
一文教会你如何用好通义灵码,让这款 AI 编码工具帮你做更多工作,更高效
如何用好通义灵码?欢迎收藏最佳使用指南。本文提供通义灵码使用指南,涵盖快捷键、配置调整、跨文件索引及上下文管理等内容,帮助用户更高效地使用通义灵码。
|
9月前
|
监控 搜索推荐 数据挖掘
精准定价与促销:CRM中的价格和折扣管理艺术
在当今竞争激烈的商业环境中,CRM系统是企业维持客户忠诚度和提高销售效率的重要工具。其中,价格和折扣的统一管控尤为关键,直接影响企业的盈利能力和市场竞争力。通过集中管理平台,企业能确保各渠道价格一致,避免混乱,维护品牌形象。合理的折扣政策可吸引新客户,提升老客户复购率。利用数据分析优化价格策略,监控并调整政策效果,确保利润最大化。CRM系统的这些功能有助于控制成本、提高客户满意度,最终实现销售增长和利润提升。
|
11月前
|
机器学习/深度学习 存储 自然语言处理
Adam介绍
【10月更文挑战第3天】
|
11月前
|
机器学习/深度学习 物联网 数据处理
C语言用于物联网更合适还是python
选择 C 语言还是 Python 作为物联网(IoT)开发的语言取决于多个因素,包括项目的性质、资源限制、性能需求以及开发团队的技能水平。C 语言性能优越,适合资源受限的嵌入式设备,能直接访问硬件,广泛应用于底层开发,但开发复杂且容易出错。Python 则以其简单的语法和丰富的库支持快速开发和原型制作,适合跨平台应用和数据处理,但性能较低,资源占用较大。根据项目需求,性能和资源要求高时选择 C 语言,需快速开发和易于维护时选择 Python。
|
10月前
|
人工智能 供应链 安全
|
弹性计算 运维 负载均衡
【阿里云弹性计算】阿里云ECS在金融科技中的应用案例:高性能交易系统的构建
【5月更文挑战第27天】阿里云ECS助力某证券公司构建高性能交易系统,满足高并发、高可用和弹性扩展需求。ECS凭借最新处理器技术、高速内存实现高性能计算;支持多地域、多可用区部署保证高可用性;弹性伸缩特性适应业务波动,降低运维成本。通过分布式架构和负载均衡技术,实现交易请求高效处理,确保系统稳定运行。案例证明,阿里云ECS是金融科技领域构建高性能交易系统的理想选择。
400 1
|
机器学习/深度学习 Web App开发 分布式计算
继Spark之后,UC Berkeley 推出新一代高性能深度学习引擎——Ray(1)
继Spark之后,UC Berkeley 推出新一代高性能深度学习引擎——Ray(1)
552 0
继Spark之后,UC Berkeley 推出新一代高性能深度学习引擎——Ray(1)

热门文章

最新文章