• 《我要进大厂》复习计划


    一、简历

    简约清晰、突出重点。

    可量化:

    (1)访问量大:可以写项目的QPS、PV、UV

    (2)访问量小流程复杂度:模块化开发、流程灵活性配置、效率提升

    (3)JVM 内存调优你可以写新生代/老年代内存回收时间提升了 ** ms

    (4)写到并发,你可以写程序调优压测可支持TPS 从1000涨到5000等等

    (5)产品经理提了什么奇葩的需求,你怎么解决了,你能巧妙的形容出来都是亮点。

    可以辅助一些图或表在简历中,直观来说一图二表三文字,当然前提是你图表确实有亮点。

    二、准备面试

    一般而言你简历上写的都必须会,而且必须有一些是你的亮点,你得有一些深入的了解,回答让面试官觉得你这个小伙子不简单,有点东西。

    (1)Java基础

    Java集合:HashMap和ConcurrentHashMap

    JUC包:aba,cas,aqs,unsafe,volatile,sync,常见的各种lock,死锁,线程池参数;自旋,阻塞,死锁和它如何去定位;oom如何定位问题,cpu过高如何定位;

    生产调试经验:top,jps,jstack,jmap这些可能会问的东西。以及可能衍生的jmm模型和mesi协议

    JVM:垃圾回收算法,垃圾收集器,jvm内存模型,每个区域用途,各种oom的种类,jvm调优经验;类加载过程,双亲委派,什么时候young gc,full gc,各种情况进入老年代的方式,你知道的越多越好,因为吹起来就越自信,举个例子,逃逸分析是什么?markword里面有什么?

    Spring:bean的生命周期,如何解决循环依赖,父子容器,还有boot的启动流程,事务实现原理,动态代理原理;

    (2)SOA

    Dubbo:设计框架,负载均衡,spi机制,一般顺势会提到zk,选举算法,分布式锁

    SpringCloud:eureka,hystrix,ribbon,feign,zuul

    MQ:重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程,读过源码更佳,更好吹

    Netty:零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好

    分布式事务:

    (3)存储

    Redis:单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型;击穿、穿透、雪崩、数据一致性;一致性hash,布隆过滤器的原理;geohash的原理以及google s2的原理,底层数据结构sds和跳表等;你多学点,准没错。

    MySQL:事务,锁,索引,b+树,主从

    (4)算法

    简单:快排,堆排,二叉树相关的,链表反转,成环,环节点,跳楼梯

    中等:双指针,dp,递归,大数据内存有限的场景的统计,有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。

    (5)计算机基础

    网络:http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。

    三、复习方法

    1. 找到第一性原理(一句话点醒)

    2. 疯狂输入 -> 疯狂背诵 -> 疯狂练习 -> 疯狂反馈

    3. 做项目输出、写博客输出

    四、面试原则

    总结回顾 -> 自我反省 -> 自我迭代

    五、面试实战

    1. 阿里巴巴面试经验

    一面40min:

    sync的底层实现,锁优化,和lock的对比等

    jvm参数调优详细过程,到为什么这么设置,好处,一些gc场景,如何去分析gc日志

    redis数据结构,使用场景,微博场景使用redis如何去设计用户关系

    线程池参数设定,为什么这么设定,作用?7大参数

    spring的循环依赖如何解决?为什么要三级缓存?

    优先级队列的底层原理?

    基本都是扣着你的项目去问,一面主要以基础为主。

    二面1h:

    基本就是设计问题了

    结合你项目问你如何设计,提出漏洞,你怎么解决?如何改进,万一挂了?加一台机器有没有问题?如果我非要不出问题怎么办?

    高并发下单扣库存场景如何设计

    rocketmq架构设计原理(大方向)

    dubbo框架实现原理(大方向)

    最近读了什么书?平时怎么学习

    三面1.5-2h:

    两个大佬一个问一个找漏洞,逮到没说清的就继续问,压力面

    也是结合项目问,为什么这么设计?让你去优化,你怎么优化,引导你用一个合理的更好的方式去优化,数据库的设计等

    在公司做了什么事情,各个系统业务线都是做什么的,你的绩效,手写算法链表反转,还算简单了

    看起来问的很少,但是是不断的否认你做的项目,在他的引导下去设计一个更好的系统,的确,他们说的是对的,挺厉害的,即便没成功,也能学到一点东西的。因为问的太久了,我细节记不清楚了

    四面20min:

    可能看我说了jvm,boss直接开始怼我jvm,还好我有准备,基本都接下来了,比如一些cms的过程,full gc做什么了之类的常规问题,很奇怪这时候问我基础,哈哈

    后来有个问题就很玄幻了,把你知道所有的中间件全说出来,估计看我广度吧,我是一口气说了几十种吧。

    hrg面:

    嗅味道了,阿里味必须足,为什么来,以前为什么不来?

    从毕业到现在有什么改变?

    一句话总结下自己,反正你需有有强烈来的欲望就对了,此时此刻,非我莫属,哈哈!

    强调一点,简历写了啥,你必须复习到位!多准备准备,失败不怕,总结经验,努力学习!

    你要悄悄的拔尖,然后惊艳所有人!

    2. 阿里巴巴Java中间件面试题经验

    2.1 Java中间件一面

    1.技术一面考察范围:

    • 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现
    • 线程池的底层实现以及常见的参数
    • 数据结构基本都问了一遍:链表、队列等
    • Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别,最后还问了JVM相关的调优参数
    • 分布式锁的实现比较

    2.技术一面:

    1.自我介绍

    2.擅长哪方面的技术?

    3. Java有哪些锁种类? (乐观锁&悲观锁、可重入锁&Synchronize等)

    4.比较重要的数据结构,如链表,队列,栈的基本理解及大致实现

    5. J.U.C下的常见类的使用。ThreadPool的深入考察; BlockingQueue的使用

    6. Java内存分代模型,GC算法, JVM常见的启动参数; CMS算法的过程。

    7. volatile关键字有什么用(包括底层原理)

    8.线程池的调优策略

    9. spring cloud的服务注册与发现是怎么设计的?

    10.分布式系统的全局id如何实现

    11.分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。

    2.2 Java中间件二面

    1.技术二面考察范围:

    • 问了项目相关的技术实现细节
    • 数据库相关:索引、索引底层实现、mysql相关的行锁、表锁等
    • redis相关:架构设计、数据一致性问题
    • 容器:容器的设计原理等

    2.技术二面:

    1.参与的项目,选一个,技术难度在哪里?

    2. Collections.sort底层排序方式

    3.负载均衡的原理

    4.设计模式与重构,谈谈你对重构的理解

    5.谈谈Redis相关的集群有哪些成熟方案?

    6.再谈谈-致hash算法(redis)?

    7.数据库索引,B +树的特性和建树过程。

    8. mysql相关的行锁,表锁;乐观锁,悲观锁

    9.谈谈多线程和并发工具的使用

    10.讲讲Redis的架构和组件

    11. Redis的数据一致性问题(分布式多节点环境&单机环境)

    12. docker容器

    2.3 Java中间件三面

    1.技术三面考察范围

    • 主要谈到了高并发的实现方案
    • 以及中间件:redis、rocketmq、kafka等的架构设计思路
    • 最后问了平时怎么提升技术的

    2.技术三面题目

    1.高并发情况下,系统是如何支撑大量的请求的?

    2.接着上面的问题,延伸到了中间件,kafka、 redis、 rocketmq、 mycat等 设计思路和适用场景等

    3.最近上过.上哪些技术站点; 最近在看哪些书。

    4.工作和生活中遇见最大的挑战,怎么去克服?

    5.未来有怎样的打算

    2.4 Java中间件四面

    最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。

    3. 一份阿里P7的面试题

    BAT的牛人多,普通人也多,虽然他们不是每一个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光也会变得宽阔,代码要求更为严格,所以普通的程序员也会被逼的变得更优秀;身边的牛人多,普通的程序员也会受到影响,提升的更快。

    下面是阿里P7的面试题,

    3.1 Java多线程

    线程池的原理,为什么要创建线程池?

    线程的生命周期,什么时候会出现僵死进程;

    什么实现线程安全,如何实现线程安全;

    创建线程池有哪几个核心参数?如何合理配置线程池的大小?

    synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;

    3.2 JVM相关

    JVM内存模型,GC机制和原理;GC分哪两种;什么时候会触发Full GC?

    JVM里的有几种classloader,为什么会有多种?

    什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;(这个我真的不会...)

    什么情况下我们需要破坏双亲委派模型;

    常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?

    JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class文件结构是如何解析的

    3.3 Java扩展

    红黑树的实现原理和应用场景;

    NIO是什么?适用于何种场景?

    Java9比Java8改进了什么;

    HashMap内部的数据结构是什么?底层是怎么实现的?

    说说反射的用途及实现,反射是不是很慢,我们在项目中是否要避免使用反射;

    说说自定义注解的场景及实现;

    List和Map区别,Arraylist与LinkedList区别,ArrayList与Vector 区别;

    3.4 Spring

    Spring AOP的实现原理和场景;(应用场景很重要)

    Spring bean的作用域和生命周期;

    Spring Boot比Spring做了哪些改进?Spring 5比Spring4做了哪些改进;(惭愧呀,我们还在用Spring4,高版本的没关心过)

    Spring IOC是什么?优点是什么?

    SpringMVC、动态代理、反射、AOP原理、事务隔离级别;

    3.5 中间件

    Dubbo完整的一次调用链路介绍;

    Dubbo支持几种负载均衡策略?

    Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?

    Dubbo启动的时候支持几种配置方式?

    了解几种消息中间件产品?各产品的优缺点介绍;

    消息中间件如何保证消息的一致性和如何进行消息的重试机制?

    Spring Cloud熔断机制介绍;

    Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?

    3.6 数据库篇

    锁机制介绍:行锁、表锁、排他锁、共享锁;

    乐观锁的业务场景及实现方式

    事务介绍,分布式事物的理解,常见的解决方案有哪些,什么事两阶段提交、三阶段提交;

    MySQL记录binlog的方式主要包括三种模式?每种模式的优缺点是什么?

    MySQL锁,悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁;

    分布式事务的原理2阶段提交,同步异步阻塞非阻塞;

    数据库事务隔离级别,MySQL默认的隔离级别、Spring如何实现事务、

    JDBC如何实现事务、嵌套事务实现、分布式事务实现;

    SQL的整个解析、执行过程原理、SQL行转列;

    3.7 Redis

    Redis为什么这么快?redis采用多线程会有哪些问题?

    Redis支持哪几种数据结构;

    Redis跳跃表的问题;

    Redis单进程单线程的Redis如何能够高并发?

    Redis如何使用Redis实现分布式锁?

    Redis分布式锁操作的原子性,Redis内部是如何实现的?

    3.8 HRPB面试经验

    1.你目前最有成就的事情是什么
    2.你有承担过项目经理这个角色吗
    3.你解决过最有难度的问题是什么
    4.你们的项目架构是怎样的
    5.讲清楚点
    6.你们是怎么做到高可用的
    7.你们这样可以高可用吗
    8.你们是怎么做集群的
    9.你的中台服务是怎么做成一片集群的
    10.说说你最了解的一块业务
    11.你平时除了和开发还有和什么人接触吗
    12.你认为你的优点是什么
    13.你认为你们中台哪一块的表结构是设计的最好的
    14.你最难沟通的一次事情是什么
    15.你认位你最有价值的一次事情是什么
    16.你们项目有遇到什么过困难吗,怎么解决的

    4. 蚂蚁金服面试题

    一、流程、题目、细节

     1. 流程

    1)录入招聘系统

    2)HR筛选简历

    3)技术面试官简历评估

    4)电话面试

    (1)不方便或没准备好,可以约个时间点;

    (2)候选人基础知识面的积累;

    (3)技术深度;

    5)现场面试

    (1)1-2个人,两个人可能一起,也可能分开聊

    以之前的项目为主导,考察技术基础能力,技术原理性问题,列举你之前的项目进行探讨,时间约1小时,列举常见问题:

    会聊一些技术深度的东西,从候选人会的技术进行深挖,一直问到你回答不出来。

    (2)简历上的项目经理,面试前要好好梳理下自己之前做过的项目,面试官会围绕项目涉及到的技术要点深挖。

    考察候选人技术深度,看候选人遇到问题总结学习及解决能力。

    自己用过的技术,一定要深入。如果连自己做的东西涉及的技术点都一知半解的话,或者被问住,一般不会通过。

    要对技术有热情,喜欢总结,复盘,经常泡技术论坛或者自己写技术blog,喜欢看技术方面的书籍。

    (3)主语言本身以及它的高级特性;

    (4)讲述自己的项目,并在中间穿插着问题(学会引导性的回答问题,抓住自己项目的亮点,引导面试官和自己聊比较擅长的技术,不擅长的技术可委婉表示不太熟悉,以免面试官问太多自己却答不上来反而不好);

    (5)额外加分项:著名的开源项目源码,自己独有的很棒的开源项目,个人博客等;

    (6)与你职位相关的内容,在面试前准备的时候,尽量朝着职位的需求方向靠拢,成功可能性更大;

    6)HRG

    (1)是否有对技术的热情

    (2)爱学习

    (3)关注所面试部门业务的发展及动态

    二、蚂蚁金服财富线介绍及亮点:
    关于人才最重要的特质:技术扎实,聪明,持续的学习力,技术热情,抗压性 

    三、阿里价值观和用人风格:

    软性方面: 阿里喜欢聪明,思维活跃,学习能力强,善于总结,自我反思,能够遇到问题举一反三,

    在和面试官的沟通过程中,注意项目经历的互动,表现出来对技术的热情和滔滔不绝的善于表达、讨论,

    主动的去表达自己的观点,有问题一定当场去提问。

    场景举例:

    1、每个候选人都会说自己喜欢看书,那么看书的过程有什么收获,看书有没有持续性,看书后是否结合自己的工作去应用,去反思和总结是他们关注的点,不喜欢三分钟热度的候选人。

    比如看三体,三体里有一个方式叫做维度,维度在做数据库设计的时候,是最直观的体现。

    2、项目中遇到的问题,你当时是如何解决的?如果当时没有解决,事后你是否自己去思考过这个问题(这个点是阿里看重的)他们关注的是你主动寻求解决方法的这个点,是你要有这种想法。

    阿里很注重的是候选人的落地,不要太空的东西,也可以主动的去和他们探讨他们的产品在应用的过程中,有没有觉得出现的问题有什么好的建议等。

    5. 阿里云新金融事业部面试题

    1、阿里云新金融事业部面试题003

    请举例说明,你是如何把 DDD 应用到实际项目中来的。例子中需要包含具体的领域
    模型设计,这么做的理由,以及因为这个设计而引进的坑。
    讲人话:MVC就是DDD最佳实践
    2、如何设计一个百万级TPS分布式系统架构?
    考察点:能够熟练应用缓存,消息中间件,数据库分库分表,读写分离等技术。
    官方回答:
    讲人话:分层、分离、缓存、异步
    思维方式:解决机构账户单行热点问题,单行变多行+余额中间表

    9. 其他反馈

    昨天两个有点价值的
    1.怎么丝滑(不停机)地上云或者切机房
    2.netty怎么解决空轮训

  • 相关阅读:
    Oracle之内存结构(SGA、PGA)
    Android添加快捷方式(Shortcut)到手机桌面
    Android悬浮窗实现 使用WindowManager
    Android闹钟 AlarmManager的使用
    JavaScript学习13 JavaScript中的继承
    Android Content Provider Guides
    Android存储访问及目录
    ReflectUitls类的编写和对反射机制的解析
    Java File类总结和FileUtils类
    JavaScript学习12 JS中定义对象的几种方式
  • 原文地址:https://www.cnblogs.com/yeahwell/p/13902883.html
Copyright © 2020-2023  润新知