为记录阿里的电面经历,特与大家分享,岗位是 JAVA 研发工程师。
答案文末分享!!!!!答案文末分享!!!!!答案文末分享!!!!!
一面主要问题如下:
- 首先自我介绍
- 数据结构算法的基本问题,如排序算法,二叉树遍历,后序遍历非递归,图的最短路径问题
- 对一个数组进行绝对值排序的算法
- java 中 hashmap 的底层实现
- java 中垃圾回收机制 GC 原理等
- 介绍自己的项目,数据库中用到的数据结构数据模型,死锁的概念(问的应该是数据库的死锁),如何避免死锁?
- 乐观锁和悲观锁?
- 一致性 hash 算法
- 项目中业务对象的关联关系 / 关联方式,谈谈左外连接及如何实现多对多关系模型
- spring 的 IOC 和 AOP
- sping 如何实现(保证)事务一致性完整性,spring 中事务传播机制类型
- 谈谈 WEB 的架构(应该指的是 j2ee 开发架构模型)、项目中的用户场景使用场景
- 对分布式架构的了解,如分布式存储 分布式缓存 分布式计算
- 谈谈对阿里的哪些开源项目有所了解?
- 对淘宝技术是否有了解?
- 对其杭州信息平台事业部其主要业务是否了解(其主要是 java 方面的开发,另可以重点关注看看工作流引擎)
二面主要问题如下:
- 首先仍然是先自我介绍
- 有过竞赛经历?奖项?专业排名?平时都看些什么书籍?是否参加了学校社团活动?哪个部门?主要工作?时间安排?
- 对哪些技术最熟悉最擅长?我说的是 java WEB 框架那些,然后就开始问 java 了
- 接口和抽象类的区别 实现有哪些不同?
- 序列化如何实现?用代码描述。writeObject? objectWrite?ObjectOutputStream.writeObject(). ObjectInputStream.readObject()
- IO 框架 集合框架的描述。如何判断文件是否存在?如何读取一个目录下面的所有文件和子目录?代码描述。
- 广度优先遍历目录下面的所有子目录和文件?代码实现?List 和 Map 的不同?HashMap 的实现?如何解决散列冲突?
- 多线程机制?线程休眠 10 秒?sleep()与 wait()的区别。
- 缓冲流 buffer 的用途?原理?
- linux 下如何查看 CPU 负载和 IO 端口的使用情况?如何创建目录?如何搜索一个指定的字符?
- 考察数据库的 sql 操作,给定了一个具体的业务表,如何对不同类型的数据进行统计。
- 事务的概念?脏读?如何避免?如何在代码中实现?
- sql 代码中如何使用如何定义一个事务?应该是如何定义一个事务的隔离级别?
- 项目中遇到的问题?解决方式?
- SSI 框架?spring 如何定义一个 bean? 代码描述。Bean 的生命周期?Bean 的 scope?
- 对淘宝技术架构的了解?从哪里获取到的?自己今后的职业规划?技术发展方向?
- 最后,对来杭州和阿里工作的意向?然后询问我自己有啥想问的?谈了下 信息平台事业部的主要业务?工作流和 ERP?
总体上来看,还是比较注重基础的 尤其是 java 的多线程和并发安全性及数据库相关,另外对有关开源框架的具体底层实现需要多阅读源码并进行总结。
下面是网上参考到的阿里 java 面试题目, 同样作为借鉴。
- hashmap,hashtable 区别。
- 是否了解过 hashmap 的源码?
- jvm 相关,主要是内存分配的过程,何时出发 GC,用什么工具或者命令来进行监控?
- 类加载,类隔离机制。
- spring 的 ioc,aop,事物,然后顺便提到了数据库的事物,两阶段提交,数据库锁的级别,MySQL 数据库锁的特殊之处(页级锁)
- java 线程池里面的 arrayblockingqueue,linkedblockingqueue 的用途和区别。
- 设计模式相关,主要讲解用途
- 如何保证数据库集群中 ID 的唯一性,假设每秒钟并发 20 万次。
- 设计十万并发级别的网站后台,如何计算使用的 ecs 数目 (云服务器(Elastic Compute Service, ECS 如阿里 ECS) 是一种处理能力可弹性伸缩的计算服务器,
- 基于 BGP 最优路由算法构架多线网络, 云服务器可以帮助构建更加安全稳定的应用)。
- memcached 和 redis 的异同和用途。
- nosql 数据库相关,主要讲了 mongodb
- 10G 的整数中,取出最大的一个(不光是使用高效的排序算法,还需要考虑内存大小)
- synchronized,volatile,可重入锁的用途和优缺点。
- java nio 相关核心的 api 基本了解和应用
- 一致性 hash
- 在一个大系统中存在哪些单点失效的问题
- hadoop 优化相关
一面,主要注重基础,问得很深很广,压力面试。
- hashmap、concurrenthashmap 底层实现和区别
- spring 框架的原理
- 如何写一个 orm 框架
- hibernate 一级缓存和二级缓存,hibernate 其他缓存
- hibernate 事务传播行为种类
- springmvc 原理
- restful 的好处
- restful 有几种请求,表单如何提交 put 请求
- web 中安全性问题的考虑,如何防止
- web 系统整体架构
- hibernate 如何实现声明式事务
- java 并发包
- volatile
- 平常都看哪些书
- spring 底层数据结构
- 如何进行反射,如何提高反射的性能
- 如何实现 java 的代理,为什么需要实现接口
- TCP 协议三次握手
- springmvc 用过哪些注解
- springAOP 可以使用哪些代理,有什么区别
- 为什么要分三层
- mybatis 与 hibernate 有什么区别,为什么不用 hibernate 直接写 sql 语句?
这面没有准备好,广度和深度压力很大,建议大家多看看三大框架源码、原理,并发包。
二面注重于项目
- 什么是 restful web service?
- 并发集合包?
- 项目中使用了哪些数据结构?
- TCP 中断连接四次挥手?
- MD5 加盐
- https
- 支付宝接口开发
- 知道哪些锁,有什么区别?
- 依旧 JDK 源码
- 项目遇到什么问题,怎么解决?
- JDK1.8 有什么新特性?
也许是觉得一面已经问了很多了,这面又答得比较不错,20 分钟就结束了,30 分钟出了结果。
三面聊人生
leader 人 very nice,给了一些建议,可能是觉得技术差不多,这面基本没怎么问技术,主要是职业发展、IBM 的实习内容之类,我想大家可能也都有自己的想法,18 分钟。
hr 面聊成长经历: 聊了一下对 B2B 的认识和自己的技术成长历程。
- 进程和线程的区别
- 什么叫线程安全?举例说明
- OSI 七层模型,包括 TCP,IP 的一些基本知识
- 数据库的锁
- DFS,BFS 算法
- 还有一些诸如 collection framework 的 Java 基础
- http 中,get post 的区别
其他的面试,感觉问的很有代表性:
第一面(只记得这么多了)
- 笔试题第四题实现又口述了下
- 有个每秒钟 5k 个请求,查询手机号所属地的笔试题(记得不完整,没列出),如何设计算法? 请求再多,比如 5w,如何设计整个系统?
- 比较熟悉什么技术? 我说 jvm 和 oracle,就让我画 jvm 的体系结构,画了之后说各个部分的职责,并扯到运行期优化。
第二面(没有技术细节,都是泛泛的,但是我回答的比较保守,只觉得能滔滔不绝的说上半小时才敢说看过或了解)
- 是否愿意去杭州
- 熟悉各种技术框架么? 源码读过么?
- 数据库了解什么?mysql 了解么
- 前台技术,看我用的 ExtJS,就问是否了解 JQuery
- 进现在的公司,觉得对技术是否有提升?
第三面,此面没有技术问题
第四面 HR(感觉这面问题回答的有点扯,毕竟是这么几年来首次面 HR,之前面过 2、3 个公司,要么很早就挂了,要么感觉流程太长,自己不愿意面下去)
- 愿意去杭州发展么? 我说要考虑,hr 就问主要考虑什么问题
- 从技术角度来说,你觉得你跟你同学比怎么样
- 你的父母怎么看待你的
-
- *
- jvm 性能调优都做了什么
- 高并发情况下,我们系统是如何支撑大量的请求的
- 集群如何同步会话状态
- 负载均衡的原理
- 数据库事务属性
- 二叉树的遍历算法
- hashtable 和 hashmap 的区别
- 并发、同步的接口或方法
- string、stringbuilder、stringbuffer 区别
- https 处理的一个过程,对称加密和非对称加密
- 线程的几种状态
- 了解手机开发么
- 个人优势
- 与同事沟通的时候,如果遇到冲突了如何解决
- 工作中觉得哪方面欠缺?
- 有问题要问么?
- 期望薪水
- 为什么要离开现在的公司
那么看到这里的你肯定想问了,答案在哪?我把这些年经历过的面试,和一些刷过的面试题都做成了 PDF,PDF 都是可以免费分享给大家的,大家关注我的公众号:前程有光,回复领取资料即可获取!