为记录阿里的电面经历,特与大家分享,岗位是JAVA研发工程师。

一面主要问题如下:

1)首先自我介绍
2)数据结构算法的基本问题,如排序算法,二叉树遍历,后序遍历非递归,图的最短路径问题
3)对一个数组进行绝对值排序的算法
4)java中hashmap的底层实现
5)java中垃圾回收机制GC原理等
6)介绍自己的项目,数据库中用到的数据结构数据模型,死锁的概念(问的应该是数据库的死锁),如何避免死锁?
7)乐观锁和悲观锁?
8)一致性hash算法
9)项目中业务对象的关联关系/关联方式,谈谈左外连接及如何实现多对多关系模型
10)spring的IOC和AOP 
11)sping如何实现(保证)事务一致性完整性,spring中事务传播机制类型
12)谈谈WEB的架构(应该指的是j2ee开发架构模型)、项目中的用户场景使用场景
13)对分布式架构的了解,如分布式存储 分布式缓存 分布式计算
14)谈谈对阿里的哪些开源项目有所了解?
15)对淘宝技术是否有了解?
16)对其杭州信息平台事业部其主要业务是否了解(其主要是java方面的开发,另可以重点关注看看工作流引擎)

二面主要问题如下:
1)首先仍然是先自我介绍
2)有过竞赛经历?奖项?专业排名?平时都看些什么书籍?是否参加了学校社团活动?哪个部门?主要工作?时间安排?
3)对哪些技术最熟悉最擅长?我说的是java WEB框架那些,然后就开始问java了
4)接口和抽象类的区别 实现有哪些不同?
5)序列化如何实现?用代码描述。writeObject?
objectWrite?ObjectOutputStream.writeObject(). ObjectInputStream.readObject()
6)IO框架 集合框架的描述。如何判断文件是否存在?如何读取一个目录下面的所有文件和子目录?代码描述。
7)广度优先遍历目录下面的所有子目录和文件?代码实现?List和Map的不同?HashMap的实现?如何解决散列冲突?
8)多线程机制?线程休眠10秒?sleep()与wait()的区别。
9)缓冲流buffer的用途?原理?
10)linux下如何查看CPU负载和IO端口的使用情况?如何创建目录?如何搜索一个指定的字符?
11)考察数据库的sql操作,给定了一个具体的业务表,如何对不同类型的数据进行统计。
12)事务的概念?脏读?如何避免?如何在代码中实现?
13)sql代码中如何使用如何定义一个事务?应该是如何定义一个事务的隔离级别?
14)项目中遇到的问题?解决方式?
15)SSI框架?spring如何定义一个bean?代码描述。Bean的生命周期?Bean的scope?
16) 对淘宝技术架构的了解?从哪里获取到的?自己今后的职业规划?技术发展方向?

17)最后,对来杭州和阿里工作的意向?然后询问我自己有啥想问的?谈了下 信息平台事业部的主要业务?工作流和ERP?

总体上来看,还是比较注重基础的 尤其是java的多线程和并发安全性及数据库相关,另外对有关开源框架的具体底层实现需要多阅读源码并进行总结。

下面是网上参考到的阿里java面试题目,同样作为借鉴。

-################################################################################

1 hashmap,hashtable区别。

2 是否了解过hashmap的源码?

3 jvm相关,主要是内存分配的过程,何时出发GC,用什么工具或者命令来进行监控?

4 类加载,类隔离机制。

5 spring的ioc,aop,事物,然后顺便提到了数据库的事物,两阶段提交,数据库锁的级别,MySQL数据库锁的特殊之处(页级锁)

6 java线程池里面的arrayblockingqueue,linkedblockingqueue的用途和区别。

7 设计模式相关,主要讲解用途

8 如何保证数据库集群中ID的唯一性,假设每秒钟并发20万次。

9 设计十万并发级别的网站后台,如何计算使用的ecs数目(云服务器(Elastic Compute Service, ECS 如阿里ECS)是一种处理能力可弹性伸缩的计算服务器,
基于BGP最优路由算法构架多线网络,云服务器可以帮助构建更加安全稳定的应用)。

10 memcached和redis的异同和用途。

11 nosql数据库相关,主要讲了mongodb

12 10G的整数中,取出最大的一个(不光是使用高效的排序算法,还需要考虑内存大小)

13 synchronized,volatile,可重入锁的用途和优缺点。

14 java nio相关核心的api基本了解和应用

15 一致性hash

16 在一个大系统中存在哪些单点失效的问题

17 hadoop优化相关

#########################################################################

一面,主要注重基础,问得很深很广,压力面试。

1.hashmap、concurrenthashmap底层实现和区别
2.spring框架的原理
3.如何写一个orm框架
4.hibernate一级缓存和二级缓存,hibernate其他缓存
5.hibernate事务传播行为种类
6.springmvc原理
7.restful的好处
8.restful有几种请求,表单如何提交put请求
9.web中安全性问题的考虑,如何防止
10.web系统整体架构
11.hibernate如何实现声明式事务
12.java并发包
13.volatile
14.平常都看哪些书
15.spring底层数据结构
16.如何进行反射,如何提高反射的性能
17.如何实现java的代理,为什么需要实现接口
18.TCP协议三次握手
19.springmvc用过哪些注解
20.springAOP可以使用哪些代理,有什么区别
21.为什么要分三层

22.mybatis与hibernate有什么区别,为什么不用hibernate直接写sql语句?

这面没有准备好,广度和深度压力很大,建议大家多看看三大框架源码、原理,并发包。

二面注重于项目

1.什么是restful web service?
2.并发集合包?
3.项目中使用了哪些数据结构?
4.TCP中断连接四次挥手?
5.MD5加盐
6.https
7.支付宝接口开发
8.知道哪些锁,有什么区别?
9.依旧JDK源码

10.项目遇到什么问题,怎么解决?

11.JDK1.8有什么新特性?

也许是觉得一面已经问了很多了,这面又答得比较不错,20分钟就结束了,30分钟出了结果。

三面聊人生

leader人very nice,给了一些建议,可能是觉得技术差不多,这面基本没怎么问技术,主要是职业发展、IBM的实习内容之类,我想大家可能也都有自己的想法,18分钟。

hr面聊成长经历:聊了一下对B2B的认识和自己的技术成长历程。

###################################################################################

1.Java基础
     ArrayList,HashMap等集合框架类,重要基础类String等的处理。HashMap的底层存储结构等。
    (也可以顺带考察下对接口,继承,重载重写的基本理解;以及异常处理的注意事项)。 
2. 数据结构与算法
   常见的查找算法及时间复杂度。
   常见的排序算法及时间复杂度。 
   比较重要的数据结构,如链表,队列,栈的基本理解及大致实现。
3. 多线程问题
   1)线程安全问题。 HashMap 是否线程安全,为何不安全。 ConcurrentHashMap,线程安全,为何安全。底层实现是怎么样的。
   2)J.U.C下的常见类的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的区别,put,offer的区别);原子类的实现。
   4)各种常见锁使用
如果上面这些掌握很好,还可以看看更深一点的 False Sharing,Cache Line,可见性与原子性等;

4. JVM
    Java内存分代模型,GC算法,JVM常见的启动参数; CMS算法的过程。
    这块回答较好,也可以只是看毕玄的Java分布式开发或网上文章的学习, 可以结合JVM启动参数常见配置,jstat等命令,看下动手能力,意愿;以及实际线上问题排查。

5.Linux使用与问题分析排查
    1). grep,awk,sed; 是否自己写过shell脚本;
    2). 常见的cpu load过高,us过高,一般是什么问题。引申出是否用过top,jstat,jstack等。
        常见的内存问题一般有哪些。 引申出是否用过free,top, jmap等。

6. 框架使用
    spring aop的底层实验原理。 aop与cglib,与asm的关系。
    spriong ioc的生命周期,(init-method,intilizingbean接口方法afterPropertiesSet的先后顺序)等。
   Hibernate对一二级缓存的使用,Lazy-Load的理解;
7. 数据库相关:
   1. mysql存储引擎中索引的实现机制;
   2.数据库事务的几种粒度;
   3.行锁,表锁;乐观锁,悲观锁

8.网络协议:
   HTTP协议;
   HTTPS协议,SSL协议及完整交互过程;

9. redis
   redis,memcache底层客户端使用一致性Hash,看是否了解;
   redis的事件驱动多路复用底层实现;引申到NIO编程, 看对Netty,或mina是否了解。
  如果候选者同时用过memcache,redis,看下是否了解两者在使用场景上的区别。以考察使用深度,以及是否有好奇精神。

10. 设计模式与重构
    常见设计模式,如singlen,factory,abstract factory,strategy,chain,adaptor,decorator,composite,template,absever等。
    重构:重构书籍

11. 学习与进取心
    最近上过上哪些技术站点; 最近在看哪些书。

12. 抗压能力及抗压意愿
    了解加班情况,了解是否愿意在一段时间996等;
13 稳定性考察
      了解家庭婚姻状况, 了解购房及居住地,籍贯情况,了解目前薪资,评估稳定性;
=======
1.进程和线程的区别
2.什么叫线程安全?举例说明
3.OSI七层模型,包括TCP,IP的一些基本知识
4.数据库的锁
5.DFS,BFS算法
6.还有一些诸如collection framework的Java基础
7、http中,get post的区别
其他的面试,感觉问的很有代表性:
 第一面(只记得这么多了)
  1、笔试题第四题实现又口述了下
  2、有个每秒钟5k个请求,查询手机号所属地的笔试题(记得不完整,没列出),如何设计算法?请求再多,比如5w,如何设计整个系统?
  3、比较熟悉什么技术?我说jvm和oracle,就让我画jvm的体系结构,画了之后说各个部分的职责,并扯到运行期优化。
  第二面(没有技术细节,都是泛泛的,但是我回答的比较保守,只觉得能滔滔不绝的说上半小时才敢说看过或了解)
  1、是否愿意去杭州
  2、熟悉各种技术框架么?源码读过么?
  3、数据库了解什么?mysql了解么
  4、前台技术,看我用的ExtJS,就问是否了解JQuery
  5、进现在的公司,觉得对技术是否有提升?
  第三面,此面没有技术问题
  第四面HR(感觉这面问题回答的有点扯,毕竟是这么几年来首次面HR,之前面过2、3个公司,要么很早就挂了,要么感觉流程太长,自己不愿意面下去)
  1、愿意去杭州发展么?我说要考虑,hr就问主要考虑什么问题
  2、从技术角度来说,你觉得你跟你同学比怎么样
  3、你的父母怎么看待你的
      1、jvm性能调优都做了什么
  2、高并发情况下,我们系统是如何支撑大量的请求的
  3、集群如何同步会话状态
  4、负载均衡的原理
  5、数据库事务属性
  6、二叉树的遍历算法
  7、hashtable和hashmap的区别
  8、并发、同步的接口或方法
  9、string、stringbuilder、stringbuffer区别
  10、https处理的一个过程,对称加密和非对称加密
  11、线程的几种状态
  12、了解手机开发么
  13、个人优势
  14、与同事沟通的时候,如果遇到冲突了如何解决
  15、工作中觉得哪方面欠缺?
  16、有问题要问么?
  17、期望薪水
  18、为什么要离开现在的公司
  * struts1.2和webwork的区别
  * hibernate和ibatis的区别
  * spring工作机制,IOC容器
  * servlet的一些相关问题
  * webservice相关
  * java基础:jvm,HashSet等等
  * 考察学习新技术的能力

其他:
   1.  店铺相关的业务特点决定,有前后端知识是加分项。 如果候选者熟悉javascript。
可以考察:
    1) 前后端优化的基本常识,比如js放在后面不阻塞等;原生js的理解,正则,时间冒泡等。
    2)firebug,fiddle等调试工具;  
    3)如果是基本使用,看下ext框架,jquery等熟悉程度。jquery插件机制,sizzle选择器。
     如果以上都不错,可以再深入考察   
   1)作用域链, 闭包的理解。
   2)看下是否了解最新的技术。 augularJS, nodejs,cmd规范,amd规范等。

阿里面试经历JAVA总结的更多相关文章

  1. 一名十年Java程序员回忆阿里面试经历——揭开阿里面试的“遮羞布”

    阿里面试经历 去阿里面试可以说非常非常的偶然和戏剧性,因为本人根本没投简历,以至于阿里hr给我电话的时候我一度认为是诈骗电话.因为深圳这家公司不错我还想在这里干个两年左右再考虑考虑. 这个时候的本人已 ...

  2. 学生党如何拿到阿里技术offer:《阿里面试经历-2014.4.18研发实习生面试经历(失败)》

    我们分享的上一篇文章是一位学长在大三的时候面试阿里实习生成功的经历的分享,其实就像学长在上一篇文章最后说的那样“面试并没有想的那么难,运气也会占一部分.”,其实我个人觉得,对于我们而言,自己越努力就会 ...

  3. Java Web架构知识整理——记一次阿里面试经历

    惭愧,从一次电面说起.我个人在某国企做一名软件设计师,国企大家都懂的,待遇一般而且没啥意思,做的方向基本都是操作系统.驱动和工具软件的开发,语言基本都是C/C++.最近也想跳槽,刚好有幸得到了一次阿里 ...

  4. 美团Java实习面试经历(拿到Offer)

      美团我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会.10月23日中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我 ...

  5. 阿里面试回来,想和Java程序员谈一谈(转载)

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  6. Java程序员从阿里面试回来,这些面试题你们会吗?

    前不久刚从阿里面试回来,为了这场面试可以说准备了一个半月,做的准备就是刷题和看视频看书充实自己的技术,话说是真难啊,不过还算顺利拿到了offer,有很多面试题我已经记不起来了,这些是当天回家整理好的, ...

  7. 阿里面试回来,想和Java程序员谈一谈

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  8. 阿里面试Java程序员都问些什么?

    刚开始也是小白,也是一步步成成起来的.需要提的一点是,你将来是需要靠这个吃饭的,所以请对找工作保持十二分的热情,而且越早准备越好. 阿里一面 一面是在上午9点多接到支付宝的面试电话的,因为很期望能够尽 ...

  9. 【阿里面试系列】Java线程的应用及挑战

    文章简介 上一篇文章[「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景]我们了解了进程和线程的发展历史.线程的生命周期.线程的优势和使用场景,这一篇,我们从Java层面更进一步了解线程的使用.关 ...

随机推荐

  1. 在Docker里使用(支持镜像继承的)supervisor管理进程(转)

    这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...

  2. Linux 修改终端显示bash-1.4$

    先取得root权限,然后在终端如下操作[root@host]$su -然后输入密码接着[root@host]#PS1='[\u@\H \W]\$' 你取得root权限后在,在终端命令下输入这个,一定要 ...

  3. mysql union和union all 的差别以及使用

    Union由于要进行反复值扫描,所以效率低.假设合并没有刻意要删除反复行,那么就使用Union All  两个要联合的SQL语句 字段个数必须一样.并且字段类型要"相容"(一致). ...

  4. HTML-HTML5+CSS3权威指南阅读(四、媒体查询)

    1.媒体类型 HTML 4和CSS 2目前支持为不同的媒体类型设定专有的样式表, 比如, 一个页面在屏幕上显示时使用无衬线字体, 而在打印时则使用衬线字体, screen 和 print 是两种已定义 ...

  5. 实战Nginx负载均衡高冗余高可用WEB架构

       最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...

  6. atitit.jndi的架构与原理以及资源配置and单元测试实践

    atitit.jndi的架构与原理以及资源配置and单元测试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin  <database> ...

  7. vue2项目 :在hosts里面配置了装逼的模式。设置应用在127.0.0.1:80端口访问; 并将127.0.0.1指向www.yours.com ;问题“ Invalid Host header”

    转自博客:https://www.cnblogs.com/cynthia-wuqian/p/8575401.html 1.MAC设置应用在127.0.0.1:80端口访问: config/index. ...

  8. hash slot(虚拟桶)

    在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小. round robin算法:是把数据mod后直接映射到真 ...

  9. 【c#】装箱与拆箱

    从内存执行的角度来看,值类型的内存分配在线程的堆栈上,而引用类型的内存分配在托管堆上.因此从值类型向引用类型的转换,势必牵涉到数据的拷贝与指针引用等操作. 装箱操作,大致过程为:在托管堆中分配新对象的 ...

  10. WEB前端面试题 分别使用2个、3个、5个DIV画出一个大的红十字

    <!DOCTYPE html> <!--两个DIV--> <html> <body> <div style="width:100%;he ...