深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向

2023-05-16

上半年公司的项目很闲,很多人觉得没意思陆续走了,我考虑到自己的发展,从6月底开始面,面到7月底,三十家公司。我从不打没准备的仗,我是一个喜欢总结经验的人,每经过一场面试,我都会那个本子记录下来,或者哪些问题是自己之前没遇到过的,或者是哪些问题是新遇到。通过一段时间的备战,面试,拿了几家offer ,最终我入职了阿里。


准备内容

算法

  • leetcode
  • careerup
  • glassdoor
  • topcoder
  • zoj
  • july的博客
  • mitbbs
  • poj
  • 杭电acm
  • codeforces
  • 复杂数据结构的讲解及实现GeeksForGeeks:
  • 一个比较牛逼的coding challenge网站

Java基础

  • 面向对象的特征:继承、封装和多态
  • int 和 Integer 有什么区别;Integer的值缓存范围
  • 说说反射的用途及实现
  • Http 请求的 GET 和 POST 方式的区别
  • MVC设计思想
  • 什么是Java序列化和反序列化;如何实现Java序列化;或者请描述

Serializable接口的作用

重载和重写的区别

进程和线程

  • 线程和进程的概念
  • 并行和并发的概念
  • 创建线程的方式及实现
  • 进程间通信的方式
  • 说说 CountDownLatch、CyclicBarrier 原理和区别
  • 说说 Semaphore 原理
  • 说说 Exchanger 原理
  • ThreadLocal 原理分析;ThreadLocal为什么会出现OOM,出现的深

层次原理

  • 讲讲线程池的实现原理
  • 线程池的几种实现方式
  • 线程的生命周期;状态是如何转移的

锁机制

  • 什么是线程安全?如何保证线程安全?
  • 重入锁的概念;重入锁为什么可以防止死锁?
  • 产生死锁的四个条件
  • 如何检查死锁
  • volatile 实现原理
  • synchronized 实现原理(对象监视器)
  • synchronized 与 lock 的区别
  • AQS 同步队列
  • CAS 无锁的概念;乐观锁和悲观锁
  • 常见的原子操作类
  • 什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的
  • 乐观锁的业务场景及实现方式
  • Java 8 并发包下常见的并发类
  • 偏向锁、轻量级锁、重量级锁、自旋锁的概念

数据库

  • DDL、DML、DCL 分别指什么
  • explain 命令
  • 脏读、幻读、不可重复读
  • 事务的隔离级别
  • 数据库的几大范式
  • 说说分库与分表设计
  • 分库与分表带来的分布式困境与对应之策

说说 SQL 优化之道

  • 存储引擎的 InnoDB 与 MyISAM 区别、优缺点、使用场景
  • 索引类别(B+树索引、全文索引、哈希索引);索引的区别
  • 什么是自适应哈希索引(AHI)
  • 为什么要用 B+tree 作为 MySql 索引的数据结构
  • 聚集索引与非聚集索引的区别
  • limit 20000 加载很慢怎么解决
  • 常见的几种分布式 ID 的设计方案

JVM

  • JVM 运行时内存区域划分
  • 常见的 GC 回收算法及其含义
  • 常见的 JVM 性能监控和故障处理工具类
  • JVM 性能调优
  • 类加载器、双亲委派模型
  • 类加载的过程
  • 强引用、软引用、弱引用、虚引用
  • Java 内存模型 JMM

在对上面的内容做了准备后,开始面试,先从小公司开始面,小公司1-2面技术,大公司3-5轮技术,一般都是一面基础,二面进阶,三面优化和场景,四面问规划,五面hr.

面试自我介绍

被人没太多的优点,双非本科,只不过大学学的数学专业。英语水平一般。

优势:

1 大学拿过奥数三等奖,ACM 大赛二等奖,当你的优秀大学生。

2 良好的沟通交流能力

3.较强的学习能力和逻辑思维能力

简历写上,自我评价潜力好!此处有装逼的嫌疑。

劣势:

1.16年毕业,经验不多,非常尴尬,上不上,下不下的情况。

2.毕业于双非本科,只要是本科就基本没问题,但有的公司要985.211的,并且还要30岁以内的。

3.前一家公司是传统行业,加入项目组时,项目稳定,每天就是有bug就修复,优化一下,其他时间就是学习的,聊骚各干各的,工作2年多跟在养老一样,每天都是 用一句话说就是编程5分钟,扯淡2小时,项目经验严重不足,很怕开发过很难的需求。

 

这一点是最伤的,很多公司看项目经历,结果你告诉面试官我写的需求都是垃圾。

学习方式

我自己情况,项目和学历肯定无法加分的。我自己对此也有清晰的认识,因此我在平时抓紧空闲时间学习和复习技术点。

1.看面试题

正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐 。

2.对问题深入理解

在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例如最常问的HashMap内部实现原理,这就促使你得开始去看jdk的源码或者是学习一些新的东西。看源码是很重要的一步,起步很难,但是会让你收益良多。

3.熟悉项目的代码和需求

把项目中不错的需求拿出来,看会,代码熟悉好,将整个功能的流程和涉及的东西吃透。项目是面试中必问的环节,一般是以一个功能点为基础展开问,因此你必须对这个功能有很深的认识,不能有模糊的地方。如果有时间,能把涉及到的知识点也搞懂最好。

4.网上做题和刷题

头条会远程面试, 一般会做题。建议去本文开头的一些刷题网站多做些题目。

5.总结记录

把自己每天学到的内容记录下来,可以让自己更有动力的复习,技术是一个枯燥的过程,你必须让自己时刻保持有动力。

投简历、约面试环节

1.投简历渠道

BOSS直聘、猎聘网。拉钩等(一般不靠谱),找靠谱猎头也行。

2.简历不要海投 除非两个情况。

1)没有社招面试经验:建议采取海投的方式,只要职位要求跟自己比较匹配都可以投,累计面试经验。

2)社招面试经验已经足够:投那些职位匹配、公司满意的职位。公司评价可以去看准网,企业查等。

3.投简历没下文

简历确实亮点不多,学历不好,项目不行,容易被HR给刷掉,因此他们看得最直接的就是你上家的公司和你毕业的学校,如果你不是从牛逼的公司/学校出来,可能会碰到和我一样的情况,应对的办法就是多投。

4.一天约几家面试合适?

最理想的情况为2家面试,上午一般在10点左右,下午一般在2点左右。建议把理想的公司放下午,因为下午的时间比较充足,可以让公司更充分的了解你。我开始面的时候,每次都是上午面的不好,下午面的不错。

5.是否该裸辞?

我一开始是边上班边投,然后利用调休时间,或者请假去面试。后来,面试机会越来越多,请假太频繁了,自己都不好意思了,并且自己也已经有足够的信心,这个时候我选择了裸辞。

裸辞还有一个原因是,在面试过程中你会发现,遇到公司要人紧急的,如果你的入职流程过长可能错过这个公司。

6.注意事项

  • 千万别迟到。
  • 做好特殊情况处理,带简历、充电宝、纸巾、伞。

面试

1笔试常见的问题

  • 面试常见的问题上面给的面试题链接基本都有。
  • 手写代码:手写代码一般考单例、排序、线程、消费者生产者 排序。
  • 写SQL很常考察group by、内连接和外连接

2.面试1-5面总结

  • 让你自我介绍
  • 做两道算法题(刷题必中)
  • 问Java基础知识
  • java 高级进阶就是我准备的那些
  • 问项目中指责和做了什么
  • 业务情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。
  • 对职业的规划
  • 你有什么想问面试官的
  • 问期望待遇

3.常问的知识要点

  • 集合相关问题(必问)
  • 线程相关问题(必问)
  • JVM相关问题(必问)
  • 设计模式相关问题(必问)
  • 数据库相关问题,针对Mysql(必问)

主流框架相关问题:

Spring的设计模式。

  • Spring中AOP。
  • Spring注入bean的方式。
  • 什么是IOC,什么是依赖注入。
  • Spring是单例还是多例,怎么修改。
  • Spring事务隔离级别和传播性。
  • 介绍下Mybatis/Hibernate的缓存机制。
  • Mybatis的mapper文件中#和$的区别。
  • Mybatis的mapper文件中resultType和resultMap的区别。
  • Hibernate和Mybatis的区别。
  • Spring MVC和Struts2的区别。
  • Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的,其内部是怎么实现的。

7)其他遇到问题:

  • 介绍下B树、二叉树。
  • IO和NIO的区别。
  • 重载和重写的区别。
  • 栈和队列。
  • 接口和抽象类的区别。
  • int和Integer的自动拆箱/装箱相关问题。常量池相关问题。
  • ==和equals的区别。
  • String和StringBuilder、StringBuffer的区别。
  • 静态变量、实例变量、局部变量线程安全吗,为什么。
  • try、catch、finally都有return语句时执行哪个。
  • 分布式锁的实现。
  • 分布式session存储解决方案。
  • 常用的linux命令。

offer 流程

 

面试通过当然还有一些后续的环节

  • 提交工资流水(大点的公司),学历,学位照片。
  • 定薪
  • 体检通知
  • 背调 发offer。
  • 入职材料 选择入职日期。

一些经验

  • 千万别裸辞,别裸辞,别裸辞 我同事裸辞了,2个月了到现在还没找到工作。
  • 先投一些普通的小公司,等面出感觉了再去面大公司。
  • 自己不会的技术简历不要写
  • 很多公司压待遇,期望待遇适当提高。
  • 不要去实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去。
  • 不要去参加很多大大小小的招聘会,纯粹是浪费时间。
  • 把面试当作一次技术的交流,不要太在意是否能被录取。就当学习。
  • 公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,感觉良好也没用。
  • 地方远的尽量通过电话面试,不然白跑。
  • 面试冲刺阶段,要保持每天学习,无论是学习新东西还是复习旧东西。
  • 无论好的坏的公司,先拿到offer再说,最后看看自己这个公司自己是否值得去。
  • 通过面试体验和面试官的风格 可以大概判断入职团队的情况。
  • 拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源。
  • 理想的公司可以多投几次,不同部门要求不一样。
  • 问到自己有深入研究过的知识,抓住机会好好表现,吹是必须的,不要轻易错过吹得机会。
  • 大公司可以走猎头渠道。谈待遇靠谱一点。

很多人问我面试刷过的题,和一些学习网址及资料,那我在这里都给大家分享出来,包括我刷过的题,还有近一年面试的经历,我都整理成了PDF,也花了我挺多时间,关注后私信“666”免费获取

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向 的相关文章

  • Effective C++(二):构造/析构/赋值运算

    个人读书记录 xff0c 不适用教学内容 目录 条款05 xff1a 了解C 43 43 默默编写并调用了哪些函数 条款06 xff1a 若不想使用编译器自动生成的函数 xff0c 就该明确拒绝 条款07 xff1a 为多态基类声明virt
  • Effective C++(三):资源管理

    个人读书记录 xff0c 不适用教学内容 目录 条款13 xff1a 以对象管理资源 条款14 xff1a 在资源管理类中小心copying行为 条款15 xff1a 在资源管理类中提供对原始资源的访问 条款16 xff1a 成对使用new
  • Unreal Engine工程项目目录及对应作用

    目录 vs Binaries xff1a 编译文件 Config xff1a 配置文件 Content xff1a 资产文件 DerivedDataCache xff1a UE针对平台特化的资源版本 Intermediate xff1a 中
  • Unreal Engine中的UHT和UBT

    UBT xff1a 附加在引擎之外的一个自定义工具 xff0c 用于管理跨各种构建配置 xff0c 来配置和构建 UE源码的过程 UHT xff1a 一个支持UObject系统的自定义解析和代码生成工具 目录 UBT xff08 Unrea
  • Unreal Engine项目目录结构

    目录 Engine 引擎源码文件 Games 项目工程文件 Visualizer VS编辑器配置文件 之前说的是工程目录结构 xff0c 这次来说项目目录结构 这里只是举了个例子 xff0c 实际请根据不同的UE版本自行分析 Engine
  • Unreal Engine的编译类型和命名规则

    目录 编译类型 命名规则 资源命名规则 文件夹命名规则 编译类型 debug game只能调试你的项目 xff0c 不能调试编辑器项目 多加了一个editor xff0c 就可以调试编辑器了 不同的编译类型可以理解为引擎在不同的类型下的监管
  • 面向对象设计的一些原则

    人很懒惰 xff0c 不愿意多写代码 xff0c 即便是Ctrl C 43 Ctrl V 也不愿意把别人的代码改来改去 xff0c 由此产生了各种复用的方法和设计原则 目录 单一职责原则 里氏转换原则 依赖倒置原则 迪米特原则 接口隔离原则
  • Unreal Engine中的Actor:理解、生成与消亡

    目录 谈谈Actor 生成 xff08 实例化 xff09 Acotr StaticClass UClass xff1a 类模板 类的快照 Actor的生命周期 Actor的消亡 Destroy xff1a 标记删除 SetLifeSpan
  • Android5.0网络之ipv6

    移动设备的大量兴起势必进一步加强ip地址不足的危机 ipv6或许成为一种比較好的选择方案 ipv6地址的获取分为两种方式 xff1a 无状态 xff1b 有状态 无状态 xff1a 通过接收路由公告 RA 来设置自己的ipv6地址 有状态
  • Unreal Engine中调试常用方法

    目录 常用调试方法 AddOnScreenDebugMessage UE LOG xff1a 在控制台看调试信息 在蓝图中直接调用PrintString 自定义日志分类 声明 定义 简化日志输出的宏 日志格式化输出 常用调试方法 在虚幻引擎
  • UE中的FString操作

    此篇是指单纯记录 xff0c 方便之后查阅 目录 创建 转型到FString FString转型到其他类型 字符串中是否包含指定串 查找给定串在其中是什么位置 字符串比较 读文件 裁剪字符串 编码解决的是文字问题 稍微细致一些的可以看 xf
  • 关于UE4/UE5的LogProperty: Warning: Serialized Class XXX for a property的尝试解决方案

    Warning reference will be nullptred Development Programming amp Scripting Epic Developer Community Forums unrealengine c
  • UE中的宏GENERATED_BODY()做了什么?

    宏GENERATED BODY做了什么 xff1f 阿佑001 博客园 cnblogs com 添加了一个静态函数static void StaticRegisterNativeUMyObject 声明结构体struct Z Constru
  • Unreal Engine 网络系统(一):网络模型及网络视角下的Gameplay框架

    个人学习记录 xff0c 如有错误请及时联系我 xff01 欢迎交流 xff01 1 客户端 服务器模型 服务器 xff1a 有一个客户端担当游戏状态的主控者 作用 xff1a 做出所有重要决定 xff0c 保证公平性 xff0c 包含所有
  • Unreal Engine 网络系统(二):网络对象同步、网络身份

    目录 网络身份 行为同步和属性同步 Actor网络身份 区分Client amp Server 身份授权类别 划分终端所在用途 思考几个问题 xff1a 什么是同步 xff1f 网络游戏中 xff0c 什么内容需要同步 xff1f 虚幻中的
  • Unreal Engine 网络系统(三):RPC同步

    目录 RPC RPC执行分三种形式 修改所有权 RPC 全称Remote Procedure Call xff0c 远端调用 指在本机上调用函数 xff0c 但在其他机器上远程执行的函数 RPC函数可以允许Client或Server通过网络
  • Unreal Engine 网络系统(四):UEC++的RPC

    目录 行为同步 On Server xff1a 服务端的RPC代码 On Client xff1a 客户端的RPC代码 NetMulticast xff1a 广播的RPC代码 属性同步 行为同步 借助UFUNCTION进行函数标记 UFUN
  • Unreal Engine 网络系统(五):带宽管理(相关性及优先级)

    目录 相关性 优先级 创建 查找 加入房间 xff08 Session xff09 网络游戏是通过计算机硬件通信方案将多台终端连接 xff0c 组建的玩家沟通环境 xff0c 从而使得玩家连接到一起游戏 受限于网络传输环境的影响 xff0c
  • 字串起始位置最大值

    给定两个字符串s1和s2 xff0c 如果s1删除若干个字符后变成s2 xff0c 则称s2为s1的子串 xff0c 求s2在s1中的起始位置的最大值 输入描述 xff1a 只有一行 s1 xff0c s2 xff0c s1和s2用空格隔开
  • 【c++】的作用域 (局部域,类域,名字命名空间,文件域)

    这里写目录标题 局部域类域类修饰指针由类限制修饰指向变量的指针由类修饰指向函数的指针 命名空间背景 xff1a 文件域 c 43 43 支持四个域 xff1a 局部域 xff0c 类域 xff0c 名字空间域 xff0c 文件域 局部域 函

随机推荐

  • Java变量名规则

    给大家简单介绍一下java中的变量名规则 和实用的起名工具 记忆变量名起名规则小技巧 变量名开头可用的类型 字下美人 字母 下划线 美元符号 人民币符号 变量名开头后面可用的类型 字下美人数非 字母 下划线 美元符号 人民币符号 数字 非关
  • Linux中的字符串和字节序列处理函数

    花了两天的时间总结了Linux编程时的字符串操作函数和字节序列操作函数 xff0c 以便后续查阅 这些函数大都不会去检查传入的参数是否为NULL xff0c 因此在使用之前要自己做检查 xff0c 否则后果你懂的 一个基本知识点 xff1a
  • extern "c"用法解析

    引言 C 43 43 保留了一部分过程式语言的特点 xff0c 因而它可以定义不属于任何类的全局变量和函数 但是 xff0c C 43 43 毕竟是一种面向对象的程序设计语言 xff0c 为了支持函数的重载 xff0c C 43 43 对全
  • 解决树莓派Unbuntu mate 使用VNC连接灰屏报错“Could not acquire name on session bus”问题

    修改 vnc xstartup 文件 打开 vnc xstartup 文件 1 添加两行 unset SESSION MANAGER unset DBUS SESSION BUS ADDRESS 2 查看桌面环境是什么 xff1a 先查看系
  • python:isinstance用法

    isinstance xff08 object xff0c type xff09 只要object是type类型 xff0c 返回True xff1b 否则返回False 作用 xff1a 来判断一个对象是否是一个已知的类型 其第一个参数
  • windows下开启Qemu串口调试

    1 EDKII 包编译 如果要在 windows 下启用串口信息打印 xff0c 需要在 build 时加 D DEBUG ON SERIAL PORT 选项 需要注意的是 xff0c 在 target txt 中 TARGET 只能是 D
  • 关于深度学习主机的一些选配问题

    作为一个深度学习的初学者 xff0c 你可能会遇到这样的问题 xff1a 我该如何训练我自己或者别人的Model xff1f 我该如何配置一台合适的主机 xff1f 目前有哪几种训练模型的方式 xff1f 接下来 xff0c 我将会对此进行
  • FreeRTOS中两个同等级无阻塞打印任务,只有一个能正常打印

    环境 xff1a STM32CubeMX 43 MDK5 printf重定向用的是官方例子 ifdef GNUC With GCC small printf option LD Linker gt Libraries gt Small pr
  • putty 连接Debian linux 报错Connection refused

    ubuntu默认并没有安装ssh服务 xff0c 如果通过ssh链接ubuntu xff0c 需要自己手动安装ssh server 判断是否安装ssh服务 xff0c 可以通过如下命令进行 xff1a xjj 64 xjj desktop
  • python 使用playsound模块出现编码问题。

    Error 259 for command play sound zhou mp3 wait 驱动程序无法识别指定的命令参数 Error 263 for command close sound zhou mp3 指定的设备未打开 xff0c
  • C/C++ 编程推荐学习顺序和书籍

    自学或者学习C C 43 43 编程不知道怎么办 xff1f 那么恭喜你看到本文 xff0c 本文将会为你提供C C 43 43 编程的学习书籍顺序推荐 xff0c 希望对大家有帮助 xff01 C C 43 43 语言基础入门书籍 xff
  • Android Studio 控制台中文乱码,解决方案都在这里了,完美解决

    前言 Android Studio 如果不进行配置的话 xff0c 运行程序时控制台中文乱码问题会非常严重 xff0c 甚至影响我们对信息的获取和程序的跟踪 通过历年的开发经验 xff0c 在本文中我总结出四点用于解决控制台中文乱码问题的方
  • 【C/C++】中的__FILE__、__LINE__、#line、__func__关键字(预定义宏)

    c 43 43 11预先定义了一些标识符 xff0c 其实也就是宏 现在简单说几个 xff1a 1 FILE 用于指示本行语句所在源文件的文件名 xff0c 如下 xff08 test c xff09 xff1a include lt st
  • 视觉SLAM入门十四讲

    视觉SLAM入门十四讲 写在前面的话什么是视觉SLAM视觉SLAM中所使用的摄像头传感器单目摄像头双目摄像头深度摄像头 经典视觉SLAM框架 写在前面的话 考研期间迷上了SLAM xff0c 买来了高翔 张涛等著的 视觉SLAM十四讲 从理
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • 敏捷开发:做一个合格的Scrum Master

    图片来源于网络 Scrum Master Beauty and Beast 在Scrum敏捷开发中有三种主要的角色 xff1a Product Owner xff08 产品负责人 xff0c 简称 34 PO 34 xff09 Scrum
  • 嵌入式软件:通过串口进行调试的一些思考和实践

    最近的工作还是改那坨代码 维护这摊东西也快要2年了 xff0c 好几次想重构它 xff0c 顺便整理一下 xff0c 不过我还是缺乏那种毅力 在这段时间里我还加了一些功能模块 xff0c 估计如果以后有新人接手这摊东西 xff0c 会抱怨这
  • 串口调试助手没有显示

    用cubeMX生成工程之后 xff0c 笔者写了下面两句话 xff08 向串口发送一个字符串 xff09 xff1a 但是 xff0c 打开调试工具怎么也接受不到数据 xff0c 魔术棒里面的 芯片型号 xff0c 调试 xff08 J L
  • vscode使用gitee

    vscode使用gitee 首先选择文件夹右键用vscode打开 然后打开vscode的终端 xff1a 在终端输入命令 xff1a xff08 每行命令输入完成之后记得敲回车 xff09 xff1a git init然后敲回车就有 xff
  • 深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向

    上半年公司的项目很闲 xff0c 很多人觉得没意思陆续走了 xff0c 我考虑到自己的发展 xff0c 从6月底开始面 xff0c 面到7月底 xff0c 三十家公司 我从不打没准备的仗 xff0c 我是一个喜欢总结经验的人 xff0c 每