写点什么

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

  • 2022 年 5 月 04 日
  • 本文字数:4040 字

    阅读完需:约 13 分钟

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

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

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

进去的第一个项目是做一个 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 面试

面试宝典大合集

由于文案限制,本文所提到的阿里巴巴 Java 面试笔记+1000 道互联网工程师 485 页+Java 高级面试知识点感兴趣的朋友请关注我注:含内容详解! 篇幅有限,已整理到网盘 ,需要的朋友扫码获取!!!!!!!


用户头像

还未添加个人签名 2020.10.09 加入

还未添加个人简介

评论

发布
暂无评论
励志!一年时间,从小白到进入阿里核心部门,“他”的逆袭之路_Java_Java架构追梦_InfoQ写作社区