Contents
  1. 1. 蚂蚁金服
    1. 1.1. 在线编程半小时
    2. 1.2. 电话面试题
  2. 2. 阿里云部门
  3. 3. 蚂蚁金服财务对账部门
  4. 4. 网易云音乐部门
    1. 4.1. 一面电话面
    2. 4.2. 二面、三面
  5. 5. 杭州霖梓(互联网金融)
  6. 6. 其它家
  7. 7. 阿里新零售部门
  8. 8. 新零售第二轮电话面试

蚂蚁金服

在线编程半小时

  1. 手写单例模式
  2. 实现一个集群模式下系统生成唯一流水号的算法:流水号不能重复、不能生成一次访问一次数据库
  3. 从给定的数组中找3个数,让他们的和为0.输出所有可能
  4. jvm类加载机制 或者任意WEB服务器的类加载机制
  5. 有一个程序能够接受很多网络申请,同时把这些网络请求中携带的信息记录下来。如果是记录至文件,那么瓶颈可能是哪些,如何设计来提高性能,其中的关键点是?相应的解决方案又有哪些副作用呢?

电话面试题

  1. JUC下的Executors框架熟悉吗? 不熟悉,那么数据库的线程池熟悉吗? 超过连接数如何处理
  2. 命令模式、责任链设计模式
  3. Loombok的实现原理是什么? 反射和编译期Anotation Process过程
  4. Spring的IOC原理,AOP实现机制。
  5. TCP的3次握手,阻塞队列的流量控制
  6. AIO有用过吗?Socket编程有了解吗?
  7. redis的集群和持久化方式

阿里云部门

2018-3-22 技术面试

  1. 频繁跳槽的原因,能否接受出差,自我介绍
  2. 最有挑战性的一个问题,如何解决的。(我聊了任务调度,从前端到后端完整的过程)
  3. mysql B+树的索引实现原理
  4. 线上频繁FULLGC 如何排查?何时会触发 FULLGC ,永久代如果满了,如何解决
  5. ZK 分布式锁原理
  6. JMeter 测试工具是否有用过

蚂蚁金服财务对账部门

  • 介绍之前做过的项目:特别是 增值税项目(因为是金融方面的面试部门),大概的业务模块和业务处理方式。
  • 你的技术如何?是偏项目管理还是技术开发,因为我项目介绍当中侧重了项目整体
  • JVM的类加载机制。 和Tomcat容器的类加载机制。如果一个类已经被加载了,但是做过了修改,如何重新加载?
  • 有没有做过分布式的项目,我说我们的项目就是消息队列实现通讯,消息队列当中如何保证A消息准确的传递到了B消息,如何确保数据一致性? 分布式事务的实现方式?有什么RPC的手段实现? Dubbo的原理是什么,有没有使用经验,如何使用,和Spring cloud的区别是什么?
  • Spring的事务传播机制级别有哪些?默认的事务传播机制是什么,如何实现B事务独立,不管抛不抛出异常都继续执行A事务

网易云音乐部门

一面电话面

2018-3-23

  • Spring相关技术:我讲了IOC AOP MVC,挨个讲了一遍,Spring AOP的运用除了事务控制和日志还有哪些运用
  • nginx中tomcat集群的配置,如何配置权重,以及整个过程
  • Redis原理和 Memcache的区别,redis的请求竞争
  • Zookeeper的原理和分布式锁
  • SpringBoot的特点,和Spring的区别,如何现实 习惯优于配置,常用的注解
  • 8*2如何最快的实现
  • String 、StringBuilder、StringBuffer的区别
  • 网络协议讲一下:我讲了TCP的三次握手 四次挥手 还有阻塞模式和滑动窗口。说完他都不敢问了。

二面、三面

  1. 分布式事务的具体实现(提到了RocketMQ实现了重传和幂等性)
  2. Tomcat的线程管理和如何控制并发,讲了一下JAVA的JUC下的线程池,构造函数,然后他问实际使用场景。
  3. mysql如何支持并发写的操作–>分库
  4. 奖金池的操作,抢票操作,如何从数据库层面实现。
  5. BolckQueue 如何防止服务器挂了 –> 数据库持久化–>数据库存储 Or 文本保存
  6. Redis 集群和持久化
  7. ZK的分布式锁实现原理,nginx做网关如何实现 –>业务是有新的url匹配规则 和 动态变化的NODE信息,做一个网关实现 ZK 和 Nginx的搭配
  8. java锁机制 和运用–> 我说了 Socket编程当中IO流的 线程池使用,还有ConcurrentHashMap中的分段锁和volatile的使用,问CHMap中size()的实现原理
  9. 消息队列的原理,以及如何实现事务(RocketMq里面有实现,但是实现原理是如何,具体在代码层面如何做实现)
  10. 测试这一块,知道哪些? 功能性测试、软件测试、压力测试(简历当中写了功能测试)
  11. 自己在项目中负责哪些模块?介绍下业务 和技术
  12. 项目的架构(我按照技术+实现的功能 大致讲了一下)
  13. xml解析的两种方式:一种快的,一种慢的,边度边写,和读完再写。 (延伸自我写的mybatis xml文件热加载)

杭州霖梓(互联网金融)

  1. String final类的实现原理。
  2. String.valueof的原理
  3. slect * from order by limit的执行顺序
  4. hash冲突的解决方式,不同的key的hash值一样,concurrwnthashmap如何实现读取的线程安全,java实现线程安全有几种方式,如何用空间换时间实现线程安全
  5. NIO的原理和使用
  6. 分布式锁的实现zk,还有没有其他方式实现分布式锁
  7. 索引的注意事项,sql优化除了索引还要注意哪些,独占锁和共享群什么时候会有
  8. jvm内存空间、常量池静态和运行时添加、如何设置jvm参数、线程栈叫什么?什么时候触发GC
  9. 事务传播性和隔离级别,提到了nest级别
  10. spring中mvc父子容器的原理,Applicatiincontext和beanfactory区别
  11. classloader如何委托子容器加载类

其它家

  • mysql的索引组织表,千万级表的遍历,limit和id联合用,索引组织表。mysql的2PC。

阿里新零售部门

  • 1000亿个数的问题,内存4G,如何算出最大的1000个数(分隔+最小堆)(Done)
  • JVM调优:什么场景会触发FullGC,如何避免呢(我说了YGC次数过多的对象会进入老年代,装不下FLLGC),调大年轻代进入ratio,或者是提高新生代所占比例(Done)
  • OutOfMemory的情况如何解决(xxm等参数配置,默认最大内存是1/4的总内存),然后命令查看哪个区爆了,最好是生成快照定位代码问题,或者是优化垃圾回收器的类型(Done)
  • 秒杀框架的实现(Redis 悲观锁的实现,我是用异步的形式实现,性能高,她问了异步数据不同步的解决方案,我说一般不会存在问题,实在不行就用同步的方式解决,只有订单生成成功了,才会扣减。实际感觉异步性能高,并发支持度更好,做好tryCatch,失败则重试,重试一定次数后还失败,就记录日志,秒杀结束后再解决异常订单的问题。其实这边还没有把悲观锁的过期时间讲出来,异常的进程不会影响到整个业务的停摆,因为有超时时间,释放锁的操作)(Done)
  • ACID(Atomicity,Consistency,Isolation,Durability)的特性(Done)
  • TCP:IP协议的3次握手和4次挥手,还有 封装机制、消息头(这个我不会)(Done)
  • Syncizaer的用法, Object.wait 和notify的使用,可不可以不再Syniczer中使用wait方法,实际不可以,会报错。以及java加锁的时候会不会出现死锁的情况,如何解决?(Done)
  • 分布式事务的解决方案(2PC 和 业务层面的校验功能–消息表)(Done)
  • Spring是否了解,IOC、AOP、MVC, MVC框架的核心类和流程(Done)
  • MQ消息不通畅的可能的业务场景,以及防止重复消费的方法:消息里面插入唯一性的内容,消息消费者消费的时候去check是否有重复消费(幂等性,ticketID)(Done)
  • SQL注入和ASS跨站攻击的解决方案(现在的框架很少SQL注入,Mybatis和JPA直接避免,她讲到存储过程的SQL注入问题,因为存储过程的参数是直接参加原生SQL的执行)(Done)
  • 创建线程的几种方式,那种最佳(根据业务场景,不复用的话 内部类、复用的话 Thread重写run方法 ,Runnable接口实现),实际上还有Future等等啊(Done)
  • Collection 和Collections的区别,一个是集合类接口,一个是工具类(Done)
  • Set和List和Map的介绍(Done)
  • Excutes的了解(Done)
  • Socket编程了解哪些 我讲了 IO NIO AIO的不同的业务场景(Done)
  • 项目介绍(业务介绍 到 技术架构介绍)(Done)
  1. 架构设计的注意事项(我聊了选择适合业务场景的框架,比如Mybatis和JPA的选择。 可扩展性,比如集群的扩展)

新零售第二轮电话面试

  • 项目介绍:业务介绍和技术架构介绍(Done)
  • 你做了哪些工作:日常开发、服务器维护、架构优化(JVM调优、集群配置(redis session共享、nginx配置集群、定时任务)、小插件的引入(mybatis xml热加载、PageHelper))(Done,包括重新一套实现)
  • Redis如何做 消息队列服务器?(Done)
  • RocketMQ如何保证消息的严格有序?
  • SolrCloud的主从同步原理

  • 项目改造中

  1. 为什么要做集群(我回答超千人在线,线程不够,他回答不会造成线程不够,除非是长连接,或者是线程池调用不够),尴尬了
  2. 集群中 前端程序实现 定时任务推送的不重复?我说的是 数据库加锁的方式 select for update,具体还要看看优化下,以及加锁业务失败如何处理?
  3. 集群中 cms系统发送消息,如何保证网站端不重复消费消息?
  • 你解决的最优挑战性的模块?
    我回答业务上面的:任务调度系统
  1. 自定义任务调度的类型和时间
  2. 几种类型的任务所需要的参数不一样
  3. 大任务由小任务组成,大事务里面要执行进度管理,利用事件传播性, require_new 来实现,任务进度查看的功能

他的建议:

  1. 克隆表达式
  2. Quarz 支持读取表数据,来实现自定义的定时任务
  3. Quarz 支持分布式环境
  4. 是否可用线程池的方式来调度这些东西,可扩展性

待办事项:
好好的再总结一下,和写代码验证一下自己的错误,不然以后面试还要问,不要在懵逼了

Contents
  1. 1. 蚂蚁金服
    1. 1.1. 在线编程半小时
    2. 1.2. 电话面试题
  2. 2. 阿里云部门
  3. 3. 蚂蚁金服财务对账部门
  4. 4. 网易云音乐部门
    1. 4.1. 一面电话面
    2. 4.2. 二面、三面
  5. 5. 杭州霖梓(互联网金融)
  6. 6. 其它家
  7. 7. 阿里新零售部门
  8. 8. 新零售第二轮电话面试