4面阿里Java架构师拿到offer后,才明白JVM性能调优和多线程有着不可或缺的地位!

前言

永远不会有正当其时的时候,你总会觉得要么年纪太轻,要么太老,要么太忙,抑或是其他什么原因。如果你总是为找不到完美的时刻而困扰,那么,完美的时机永远不会出现。

                                                         

阿里一面

1.自我介绍,包括做过项目。

2.有看过哪些JDK源码,了解哪些常用库。

3.集合框架HashMap的扩容机制,ConcurrnetHashMap的原理

4.jvm内存模型与gc内存回收机制

5.classloader结构,是否可以自己定义一个java.lang.String类,为什么? 双亲代理机制。

6.了解哪些设计模式,6个设计原则分别是什么?每种设计原则体现的设计模式是哪个?

7.关于设计模式看了哪些书?书名是什么?

8.uml模型图画过哪些? 类图中类之间的关系有哪些,区别分别是什么?

9.画uml中类图时候用过一种虚线么?做什么用的?

10.做过应用相关性能测试的,举个例子,实际项目中怎么使用的。

用过并发框架相关的哪些内容

11.了解哪些osgi的框架?

12有没有做过jvm内存调优,如何做的,举例子,用过哪些工具?

阿里二面

1.自我介绍

2.看过哪些源码

3.java的io库的类结构图所用到的设计模式如何体现

4.画出自己设计过的设计模式如何体现,画出结构图,并进行讲解。

5.画出自己做的架构的项目架构图 如何扩展等

6.数据库设计中主键id设计的原则

7.jvm内存调优用过哪些工具,jstate做什么用的?如何dump出当前线程状态?

8.并发框架是否有了解

9.classloader的双亲代理机制

10.应用服务器的jvm调优实际经验,如何做的,在哪里用到的

11.在哪里获取最新资讯,逛什么论坛。最新的Swift语言有什么看法

12.设计原则与设计模式对应

13.servlet/filter作用原理配置

14.ibatis in操作 以及一个属性的作用

15.spring aop 用了什么设计原则,自动注入配置是做什么用的

16.jboss的类加载器

17.session共享机制

18.做过最成功的一件事情是什么?

19.最大的争执是什么?

20.为什么想要离职去阿里

阿里三面

1.现在公司负责什么?

2.项目主要目的是做什么的?

3.公司管理方式、项目问题反馈机制是什么?

4.Java 的序列化做什么用的 序列化id会出现哪些问题?

5.OSGi用过哪些?类加载器结构如何,如何在一个bundle中加载另外一个bundle中的一个类?

6.nio是否了解 阻塞之后通知机制是怎样的?

7.uml设计类图如何画,类之间关系以及区别

8.spring如何不需要配置文件加载bean定义,可能是问自动注解或者是properties文件定义bean

9.ibatis等框架是不是都是实际在使用的,技术细节

10.为什么想离职?

阿里四面

1.自我介绍

2.公司做什么,业务, 负责内容,汇报机制

3.企业级应用安全相关

4.http协议,返回码,301与302区别

5.多线程并发用过哪些

6.应用服务器相关,谈最熟悉的

7.为什么离职

基础

基础方面我的建议是一超多强,也就是有一个或者几个小的地方特别精通,但是广度要有,不要盲目追求mq这些东西,实际的面试还是以(408-计算机组成)+数据库为主的,也就是说当你os、网络、数据库还不错的时候已经满足了进大厂的需求,再熟悉两个知名中间件,就可以去收割了,应届生不建议死磕分布式、微服务之类的东西,很容易搞崩自己的心态。事实上我的数据库因为在迷茫期读了掘金小册和innodb存储引擎两个,所以理论知识较为扎实,但我的os非常差,只能讲讲进程线程内存这些基础的,但还是有了些小的offer,所以大家一定不要贪多。另外语言方向我只懂Java,一些小的建议就是Java开发要有能力把os的问题全扯到虚拟机和并发上来,另外Java的源码不一定追spring,但是juc和util下的集合之类的一定要有理解,尤其是阿里之类的真的会为源码第一行是什么的,千万要谨记。

另外可以记住类似于双重校验之类的思路,还有不要死记硬背,比如虚拟机的类加载器不要只看书,其实源码很简单的流程,可能只需要半天你就从背书仔到了源码大佬,很多事情一定要进去,不要在外面观摩。

这里给大家推荐一些源码笔记吧,觉得对自己的帮助非常大。

由于笔记的字数过多, 笔记已整理打包压缩成文档,有需要的朋友麻烦务必帮小编三连下(这样能让更多人看到)私信回复【笔记】或者看下方即可来获取笔记了!

并发编程核心笔记(必看)

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

并发编程共享模型篇

  • 并发编程概览
  • 进程与线程
  • Java线程
  • 共享模型之管程
  • 共享模型之内存
  • 共享模型之无锁
  • 共享模型之不可变
  • 共享模型之工具

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

模式篇

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

应用篇

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

原理篇

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

JVM从入门到入魔 笔记

  • JVM内存区域划分
  • JVM执行子系统
  • 垃圾回收器和内存分配策略
  • 编写高效优雅Java程序
  • 性能优化
  • JVM常见面试题指南

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

MySql性能调优

  • MySQL 常用对象
  • MySQL体系结构,存储引擎及SQL优化
  • MySQL缓存,参数调整及锁
  • MySQL 常用工具、主从复制及综合案例

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

备战秋招资料库

爆肝1000小时!4面阿里java后端,才发现并发编程和JVM是必不可少

有需要的朋友三连文章后台私信【笔记】或者直接扫描下方即可来获取笔记免费领取!

我的简历一般都会过筛选,至今只被三七和图森未来刷掉,但我其实个人经历是非常少的,所以我的建议就是写好自己的教育经历,至于跨考生,可以先写自己的硕士专业,然后本科专业先不写,不用硬套模版,这里建议超级简历,可以根据自己的喜好进行一些设置。在投递简历的时候尽量选择内推邮箱,原因在:1,响应快,2,可以用自己的简历模板。这里想给大家强调一个误区,对于技术岗来说,简历真的只在初筛时有用。(很多公司还是看的我的春招简历,也给过了),这就要求我们的简历一定要做好减法,怎么样刚够又不会给自己挖坑呢?这里留白我会贴一下我的技能栈,另外实习经历似乎也不是越多越好,我一直只贴了我的美团实习,再加2到3个小项目点缀一下,就可以进行投递了,千万不要写太多给自己挖坑,大部门面试官还是对着简历面的。

项目

项目的话,相信是很多跨考党和本科生的难点,这里我建议牛客的视频课,这个很容易找得到,不用花很久,一个月的每半天足矣,我觉得最重要的是项目的完整度,就是大概要走完项目主流程,然后在某一个模块进行深挖,也就是针对自己的技能点去挖项目,而不是根据项目来找技能点,比如,引入缓存模块的时候自然而然尝试redis各种api,这样子就很容易熟悉项目,其实在面试的过程中最重要的是整个项目为何如此设计,具体的点能答出几个就很好了,刻意的去制造一些bug并尝试一些解决方案,基本有一些这样的思考,就可以找到一份不错的实习,再在实习过程中接触真实项目,真实项目最重要的是理顺和拉通,因为自己需要负责的可能只是某个具体模块,如果疏于思考而只注重接口实现就很容易陷入增删改查的怪圈里。

但是项目对于学生而言的重要性远不如基础,过硬的基础足够寻找一份很好的工作,不要因小失大,项目只是为了对基础的一些细节实现而服务的,其技术点远不如书上那么深入,项目中重要的其实是各种api各种中间件之间的比对过程中针对具体业务场景做的一些取舍,所以最重要的是还是基础,希望大家不要过于在意项目。如果真的没有项目,就可以在幕课或牛客跟一个完整项目,勤奋点的话一个月绰绰有余就可以搞完,之后进行严密思考即可。

面试

不知道大家会不会跟我一样一开始特别讨厌面试,而我现在特别喜欢面试,很愿意去面试。因为面试是所有环节里自主性最大的,首先要有一定的信心:能让我来面试,只要我的简历属实,那么证明我的硬性条件是符合公司要求的。那么面试就应该是一个平等交流的过程,一开始我很容易怯场,后来发现怯场反倒挂,每个人应该拾起自己的信心,在面试中,合理的引导面试官进入自己擅长的领域。如果发现自己没有擅长的领域,就一定要有广度,也就是说,广度和深度必须至少有一个:当你某点特别突出,你要注意的是怎么让面试官发现你这个点。当你每个点都知道,但是不是很深入,就要多做发散性的引导。总体来说,大家如果好好准备过的话,都或多或少有自己的亮点,面试过程中一定要记住,对方也很愿意跟你交流现在应届生的技术栈和思路,每个程序员也是一个孤独的人,面试的时候也是交朋友的过程,当你觉得对方很愿意和你做朋友的时候,面试大概就过了。

猜你喜欢

转载自blog.csdn.net/m0_46757769/article/details/109201930