能不能留一下宝贵的建议或指导或者内推一下,现在帖中不方便放个人的简历。希望您能留下邮箱或者微信,我把简历发给您。我在这先简单介绍一下自己。
某高考大省一本计算机软件,工作三年以上。目前在杭州一家公司工作 3 年整,主要从事 Java 开发,现在是所在公司技术核心(技术 leader 加主程)。 领导信任,同事融洽,工作轻松。但是去阿里一直是自己的目标,外加以此做出的准备和付出的努力,以及考虑到的未来发展。
我的最大优点就是觉悟高(只有努力一条路可走),外加行动力还行。毕业以来每天都学习 1-2 小时,几乎没怎么间断。从本公司的代码看起, 直到完全理解架构、业务、实现,再到读技术书籍各大网站技术博客,再到深入 Java 核心 API 的源码。公司就这百万用户,年流水不过亿,任我这么折腾,但是平台就这么大。 虽然一个大企业技术不是一个人,但是这就经验和平台。我深刻认识到这一点,经验和眼界不足,我就疯狂研究源码,从 JCF 、JUC 到 Spring 全家桶、Mybatis 、再到 Netty 。
感慨 Java 程序员要学的太多,不说计算机、后端等相关知识,就是 Java 相关知识都特别庞大。记忆力不强只能一遍又一遍硬学,JUC 都学了十几遍,不过每次都有不同的收获也算值得。
但是自己三年多没面试过,虽然工作不重,但还是有工作要做,不知道要准备成什么样子,该刷面试题,还是要仔细复习一遍,还是先去其他公司面一下。
现在第一志愿就是杭州阿里,期望职位是阿里云、天猫、菜鸟的 Java 开发,给自己的定位是 P6 或 P6+。我知道人生七分天注定,但是也要把剩下的做好,把在自己身上出纰漏的概率降到最低。毕竟这是我的自荐,可能有些夸大的成分,如果有冒犯到大家,请不要生气。
重要的类仔细研究源码实现,比如 ThreadPoolExecutor 、ForkJoinPool 、AQS,特别重要的类一行一行研究源码,力保每行代码都知道是什么意思,为什么要这样设计,比如 ArrayList,ConcurrentHashMap 。但是认知有局限性,所以可能出现一些偏差,如果愿意指正,感激不尽。
ClassLoader,Java 8 只有 BootstrapClassLoader ( BCL )特殊,只有 BCL 有权力加载 java.包下的类,但是有非标准参数-Xbootclasspath/p 可以使自定义类取代 Java 核心 API, 比如 HashMap 之类。虽然 Java 层面无法获得 BCL 的引用,但是 Unsafe 的 defineClass 可以在 JVM 启动以后,也能让 BCL 加载自定义类,比如 java.test.JavaTest,但是无法替换核心 API 。ClassLoader 在 Java 11 (其实 Java 9 )发生了重大变化,-Xbootclasspath/p 被删除,核心 API 更加安全,ExtClassLoader 被删除,新增 PlatformClassLoader ( PCL ),当然不是换名这么简单。PCL 也有权力加载 java.包下的类,比如 module java.sql 就是其加载的。所谓的双亲委派模型也被抛弃了,现在 ClassLoader 加载的是 module 下的类,所以现在是先搜索类是否在当前 ClassLoader 加载的 module 下,然后交给父辈加载器,最后找不到会调用 SystemClassLoader 尝试加载 classpath 下的类(兼容 Java 9 之前的代码)。Tomcat 、Spring Boot 的类加载也不算复杂,Tomcat 广为流传的三个 common 、server 、shared 加载器其实都是 URLClassLoader 的实例,而且 7 及以后的版本这三个合而为一,只剩下 common 加载 lib,而内嵌情况下只有 WebappClassLoader 。Spring Boot 则扩展了 URLClassLoader 以支持 FatJar(jar in jar)。
类卸载条件苛刻的多,Java 规范规定 BCL 加载的类不能被卸载,而 Class 和加载其的 ClassLoader 实例又相互持有,所以绝大多数 Class 不会被卸载,包括动态代理生成的。但是 defineAnonymousClass ( lambda 原理)生成的类不会被其 ClassLoader 实例记录,还有反射创建的 Method 对象,调用一定次数会生成 Class,但是其 ClassLoader 实例只加载这一个类,所以这几种情况类被卸载还是不难的。
ThreadLocal,ThreadLocal 只是一个 Key,起作用的是 ThreadLocalMap,其三种节点 null 、key=null 、正常节点,其中 run ( between two null slots ),每次 get/remove 如果在查找元素的时候发现 key=null 节点,则清理并 rehash 从定位到 runEnd 的所有节点,而 set 查找位置的过程中遇到 key=null 节点则会清理整个 run 。而扩容则是达到 2/3 阈值之后清理整个数组,如果清理过后元素数量还大于容量的一半则扩容。针对如此复杂并且低效的 ThreadLocal,Netty 提供了 FastThreadLocal 取代之,底层使用数组加索引直接访问,用空间换时间,自下而上的改造让 FastThreadLocal 不会出现内存泄露。
ConcurrentHashMap ( CHM ),CHM 在 Java 8 中直接重写,现在几乎是个并行 Map,是 JUC 最重要的类,原理简单,设计巧妙。理解 CHM 的 bin 意义、计数、扩容、遍历就能大致能弄清楚它。CHM 计数基本上照搬了 LongAdder,CHM 的 size 能超过 threshold 吗?能超过 capacity 吗? addCount(long x, int check)的 check 如何理解,为什么要加 mappingCount()取代 size()呢。CHM 怎么保证在扩容过程中遍历的呢。CHM 最有技巧的是并发扩容,此时 sizeCtl 高 16 是数组长度的标识,低 16 位代表扩容线程+1,通过数组分段实现并发(并行)扩容,不可谓不巧妙。但是 Java 8 扩容的时候是有 bug,这个直到 12 才修复。而且在扩容的过程中,有两点我不敢苟同,1.对单核处理器(逻辑)只有一个线程完成扩容,2.这个更重要,所有数据迁移完毕后,留一个线程 recheck,在这个线程没有 commit 之前,所有写线程都会自旋,recheck 时间依赖数组大小。线程的运行时间由 OS 调度,OS 不可能让一个线程一直运行,所以在两种情况下,效率不高,也会造成很大的 CPU 时间浪费。
AQS,虽然现在 AQS 及其子类已经不算特别重要了,但是其设计思想还是值得学习的。AQS head 节点代表的意义是什么,为什么从 tail 向 head 查找,独占模式和共享模式除了 Condition 只能在独占模式使用外真正的区别到底是什么呢,是独占模式只能有一个线程获取同步状态吗,那能不能用独占模式写一个 Semaphore 呢。带着疑问学习 AQS,理解也会更加深刻。
ThreadPoolExecutor 、ForkJoinPool 、Netty EventExecutor/EventLoop,ThreadPoolExecutor 基于 BlockingQueue,正所谓成也萧何败也萧何,BlockingQueue 基于 AQS,而 AQS 实现的独占锁现在性能和 sychornized 差了不止一个数量级,不仅如此,底层共享一个 BlockingQueue,造成效率低下。ForkJoinPool 是个先进的线程池,不仅每个线程都有自己的工作队列,还能在空闲时窃取其他的任务,已到达负载均衡,它是 JDK 中最重要的并持续维护的线程池,是众多并发并行结构的底层线程池,如 CHM 的各种 TASK 、CompletableFuture 、parallelStream 等等。但是其依然有缺点,实现非常的复杂,它就是 JUC 最复杂的类(体系),而且每个版本都有大改动,行为在每个版本也不一样,负载均衡如此复杂却没带来高效,如果是 Java 8 则不建议使用,因为 ForkJoinPool 会创建和销毁大量的线程,commonPool 更加不推荐使用。而 Netty 线程池体系非常庞大,几十个类构成,实现了 Future/Promise 模型,EventLoop 绑定一个线程,每个 EventLoop 都有一个工作队列,并且通过轮询实现了任务提交的负载均衡( ForkJoinPool 是执行的负载均衡,思想更先进),Netty 的线程模型和线程池给人巨大的启发,线程并不需要太多,依然可以有极高的效率,Netty 5 就是打算使用 ForkJoinPool 取代其本身的线程池,但是最终效果并不好,此版本也废弃了(还有其他原因)。我目前知道 Netty 线程池唯一坑点就是 EventLoop 被关闭后不会重建,除了 NioEventLoop,其他的线程池都会被 execute 提交的 runnable 产生的 unchecked exceptions 关闭(大坑)。
当时好奇 Mybatis ( JDBC )增删查改的发送和返回到底是什么,用抓包工具分析 MySQL 的包(对应 OkPacket ),做了大量的测试,发现了没有开启 rewriteBatchedStatements 的 addBatch 就是循环提交,发现了更新操作的 Affected Rows 和 Rows matched 的区别,也发现了自增 id 和 Last_INSERT_ID 、addBatch 返回 ids 等线程安全的原理,原来这些是基于 MySQL session/JDBC connection,相当于 ThreadLocal,当然没有线程安全的影响。
1
1194129822 OP 能不能给个宝贵的建议或意见
|
2
kanemochi 2020-12-07 10:27:28 +08:00 1
找个内推还不容易么,简历直接挂某招聘网站不就一堆过来要简历
|
3
horx 2020-12-07 10:28:28 +08:00 via iPhone 1
@1194129822 联系下我个人页的邮箱
|
4
blindpirate 2020-12-07 10:28:56 +08:00 1
AFAIK, 阿里云、天猫、菜鸟已经不招 P6 了(或者需要特批),只有集团的某些子公司才招 P6 。
|
5
s1syphus 2020-12-07 10:29:08 +08:00 via Android 1
学生党表示已经很厉害了,加油!你也可以到脉脉上试试看
|
6
hanhan13 2020-12-07 10:29:11 +08:00 via iPhone 1
@1194129822 留个微信吧,我来推你
|
7
reeco 2020-12-07 10:29:18 +08:00 via iPhone 1
wechat: ZW50ZXJfbmV3X3dlY2hhdA==
最近正在找人 |
8
hello2060 2020-12-07 10:34:02 +08:00 1
同学,来澳洲吧。你这水平,我保证你 1 天 1000 澳元起。。
|
9
niuroumian 2020-12-07 10:42:33 +08:00 1
@hello2060 如何去澳洲? 有好公司介绍吗?
|
10
hello2060 2020-12-07 10:44:41 +08:00
@niuroumian 我没有公司介绍,很偶尔我会转发几个猎头的赞助工作签证的澳洲公司,但网友们都说是初创公司,太累什么的。
|
11
niuroumian 2020-12-07 10:48:02 +08:00
@hello2060 澳洲天气是否太热?和加拿大比有什么优势吗?软件工程师发展前景如何?
|
12
hello2060 2020-12-07 10:52:34 +08:00
@niuroumian 没了解过加拿大,我觉得加拿大的好处是离美国近。拿到加拿大国籍容易去美国工作。澳洲国籍能拿 e3 签证去美国其实比加拿大人拿的 tn 签证要好,可是实在离美国太远了。只有亚马逊每年会到澳洲来招人,所以去美国工作还是加拿大更好些。
本身澳洲程序员的话收入不是太高,大公司可能 13-15 万澳元税前吧。我上面说的 1000 一天是我这种 contractor 也就是外包的工资,比正式员工高一些。 天气还好吧,现在是夏天了我这最低温度还在 10 度以下。。 |
13
niuroumian 2020-12-07 10:56:27 +08:00
@hello2060 感谢回复!如果想做 contractor 怎样拿工作签证呢?是不是得找一个挂靠公司呢?
|
14
seven123 2020-12-07 10:58:41 +08:00 1
哎,比我厉害的人还比我努力,难受啊
|
16
hello2060 2020-12-07 11:00:57 +08:00
@niuroumian 一种是直接申请绿卡,来澳洲找工作。如果这条路走不通,那就找个工作,让公司给你办工作签证,然后满足条件了转绿卡,可能是这样。反正肯定要找到工作先的。
高工资的 contractor 只有 zf 部门有啦,一般都要求公民身份,有的还有保密权限的要求。来到澳洲 5 年之后基本上才有机会考虑这些。 但 4 年就可以入籍了,胆子大的话可以直接买张机票去美国,大公司面一轮下来,e3 签证很容易申请的,公司一般都会给你办的。 |
17
poppersd 2020-12-07 11:08:39 +08:00 1
老哥牛逼 祝好
|
18
wgbx 2020-12-07 11:11:56 +08:00 1
出师表
|
19
woshiaha 2020-12-07 11:13:47 +08:00 1
杭州现在不一定要去阿里 阿里给的薪资大厂里面也就中游 而且工作氛围有点差
从你文章列举的知识点来看我感觉你理解还是可以的 可以把算法准备准备 项目架构经验整理一下 面一下杭州字节和杭州快手 这俩内推帖子这论坛就有不少 还有上海杭州的一些外企也可以试试 前提是要准备英语面 可能准备周期更长一些 至于阿里的内推 你简历挂 boss 上就有一大把了 由于 kpi 的关系 阿里的招聘轰炸密集程度感觉仅次于外包 |
20
wdytoya 2020-12-07 11:20:31 +08:00 1
能静下心吃透源码的楼主值得鼓励。当然到大厂你就会发现技术的深度是一方面,还要有广度,这个广度不单是技术的,也包括业务的,也包含协作的,楼主自己也自知由于公司或者时间的限制能接触到的东西还不够多。但如果你真要面试的话,个人建议还是多了解一些,好好准备一下总不是坏事,当然这种准备不可能说让你去把所有框架的源码都看一遍,但也不应该只停留在了解或使用的层面,应该要准备到面试官给你一个应用场景,你立即能反映出来在这个场景中哪些模块可以套哪些框架,并且如何进一步优化,只要能把每一块都答到,并且每一块的主思路都差不多,那基本上就可以认为你这题答得八九不离十了
以上是我的个人建议,如果你有兴趣来支付宝做业务开发的话,欢迎投递简历到 [email protected] |
22
PerpetualHeng 2020-12-07 11:43:56 +08:00 1
henghengheng996,直接加我
|
23
PerpetualHeng 2020-12-07 11:44:14 +08:00
上面是我的微
|
24
S8I86w6eTxeLcK0a 2020-12-07 11:51:48 +08:00 1
兄弟 很棒,考不考虑给我司兼职下,做技术指导。vx:979433196
|
25
zzzzming 2020-12-07 12:29:15 +08:00 via Android 1
老哥,考虑网易吗?考虑的话可以看看我之前的帖子
|
27
rambo92 2020-12-07 14:07:47 +08:00 5
确实是刚毕业 3 年的孩子,对阿里还有着大厂期待😁
|
29
wysnylc 2020-12-07 14:12:12 +08:00 1
人才
|
30
fcoolish 2020-12-07 14:17:32 +08:00 1
我感觉进大厂挺难的,你确实做到一些代码和框架细节的深入研究甚至有自己的理解。
但是现在要求不仅是理论深度,还有算法考核和架构设计,缺一不可。 |
32
bk201 2020-12-07 14:21:14 +08:00 1
有啥想不开的要去阿里?那么多一线
|
33
Bijiabo 2020-12-07 14:27:35 +08:00 1
找个正经公司吧,别去阿里
|
35
DyingSwan 2020-12-07 15:29:15 +08:00 1
默默顶贴
|
36
EdwardXia 2020-12-07 15:34:34 +08:00 1
加油
|
37
lwlizhe 2020-12-07 15:35:10 +08:00 1
话说阿里面试重算法不
|
38
zhangzhang 2020-12-07 16:55:54 +08:00 1
@hello2060 #12 现在给 sponsor 的公司太少了....有靠谱的猎头推荐吗?
|
39
cctv1005s927 2020-12-07 17:37:20 +08:00 1
|
40
hello2060 2020-12-07 17:44:55 +08:00
@zhangzhang 我工作找的不多,猎头认识的也不多。手头只有这一个 [email protected] ,你给她发信,让她把你加到 mail group 里面,她会不定期的发布她有的一些工作,但似乎主要是游戏相关。她也在 linkedin 上 https://www.linkedin.com/in/bronwynnlusted/ 你可以关注她,看看她朋友圈里有没有别的猎头。。
|
41
pkwenda 2020-12-07 18:03:03 +08:00 1
可以,技术强,态度还真诚,其实你这水平挂个简历就够了
|
42
SuperManNoPain 2020-12-07 19:27:51 +08:00 via Android 1
太强了
|
43
27149 2020-12-07 19:45:41 +08:00 1
很靠谱的小孩啊,虽然看不懂,但是感觉很认真,6~6+应该没啥问题
|
44
1194129822 OP 下班到家,在公司怕被发现,不敢太猖狂😂
|
45
1194129822 OP @hello2060 说的太夸张了,我能在中国混好都不容易了,一步一步走😂
|
46
1194129822 OP @woshiaha 是的,之前也有自称淘宝,钉钉之类的,打电话问我有没有想跳槽,一个我怕是骗子,其次我怕是刷 KPI,我觉得内推还是可靠一些。
|
47
1194129822 OP @kanemochi 非内推,很容易成为刷 KPI 的产物,还是谨慎一点。
|
48
talex 2020-12-07 21:15:39 +08:00
菜鸟部门缺人,非常缺,p6p7p8 都很缺。
绿色软件:YTY5MDA2MjkxOQ== 建议去小公司练练手再投,顺便说一下,可以年前面试,年后入职。 其他人有需要的也可以内推,内推阿里的其他岗位也可以的,官网上找好岗位,链接发我就行。 |
49
linnana 2020-12-07 21:24:07 +08:00
给个建议,如果真对阿里感兴趣尽量做好面试准备,特别是八股文一类的,先挑几个中小公司练练手查缺补漏
不然初次面试面得差后面就很难获得其他部门的青睐了,系统里有记录的 |
50
zy445566 2020-12-07 22:36:10 +08:00 via Android
去了之后的你:什么垃圾公司,垃圾领导
|
51
yhxx 2020-12-07 23:23:20 +08:00
可以给我一份简历,淘系技术部(天猫 /淘宝 /聚划算等的技术团队都在这个部门)急求 P6 、P7,前后端测试都有需求
dGlhbmhhbmcuanRoQGFsaWJhYmEtaW5jLmNvbQ== 不知道楼上的“阿里云、天猫、菜鸟已经不招 P6 了”这个消息是从哪来的 |
53
hello2060 2020-12-08 06:29:20 +08:00
@NilChan 这个其实我不是很清楚哈哈是不是有点误导了,我自己的两份 java 工作都是在 zf 部门,没有在企业里干过。但我以前认识的一个印度人很能来事,各种面试,虽然水平很差。他和我说 java 工资比 c++高,基本上 13 万都有的。我结合自己找 c++的经历,c++是工资低一点,12 万左右已经很好了,所以我觉得 13 万应该是正常的。也许也不要太 senior 吧,可能 3 年经验就够了?
不过 15 万的话,看起来是挺高的,估计经验要求高一点 |
54
alw 2020-12-08 08:33:05 +08:00
我觉得还是 github 与博客有说服力 0.0
|
55
NilChan 2020-12-08 08:40:41 +08:00
@hello2060 15 万真的已经很高了。我在加拿大,除了 google 微软这种,一般公司的非 Senior 的开发大概也就 11 - 12 万。而且我对标我在澳洲的同学,加拿大的工资是比澳洲要高的。
|
56
keshawnvan 2020-12-08 09:43:58 +08:00
零售云事业部,感兴趣的话可以加我 vx:fkx0703
|
57
kuner0614 2020-12-08 09:51:27 +08:00
看起来很优秀,没有建议。给楼主加个祝福 buff,加油嗷
|
58
xw 2020-12-08 10:17:21 +08:00
加油
|
59
joejo 2020-12-08 14:55:52 +08:00 via iPhone
联系我
|
60
joejo 2020-12-08 14:56:04 +08:00 via iPhone
JoeZhao16
|
61
joejo 2020-12-08 15:00:06 +08:00 via iPhone
阿里安全和阿里云都可以帮你内推,请加我 v 呀
|
62
Misakas 2020-12-08 17:41:11 +08:00
哥哥头发还多吗
|
63
yukong 2020-12-08 17:41:12 +08:00
阿里云、天猫、菜鸟、蚂蚁都可以内推 欢迎勾搭
邮箱 base65: eGlvbmdwaW5nLnhwQGFsaXBheS5jb20= |
64
Betsy 2020-12-09 07:19:10 +08:00 via iPhone
老哥很强,期待老哥后续,将来入职阿里了,务必回来分享啊
|
65
jaryur 2020-12-10 01:49:30 +08:00
菜鸟业务团队后端急缺人(P6/P7) amFyeXVyMDAwMUBnbWFpbC5jb20=
|
67
Currybro 2020-12-23 11:42:52 +08:00
同事零售事业部,感兴趣可以加下 vx MTU5MjEyNzk2MDA=
|