阿里&滴滴面试心得

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/heroqiang/article/details/81110238

前段时间面试,成功拿到滴滴和阿里的offer,总结一些面试的心得分享给大家,持续更新中~

Spring

Mybatis

Redis

  • Redis一般会问的比较多,可以多了解一下。集群、过期键策略、主从复制、哨兵、AOF持久化、RDB持久化都是比较常见的问题。
  • 底层的数据结构也可以了解一下,例如SDS(Simple Dynamic String,简单动态字符串),跳跃表,还有一些压缩策略(一般为数据大小发生变化后数据结构的变化)。这个面试问到的不多,但是想对Redis有更深了解的同学还是可以了解一下的。
  • 笔者面试的时候曾经被问到过Redis一些操作的时间复杂度,这个当时确实了解不多,答的不太好。
  • Redis的学习可以参考中文官方文档:http://redis.cn
  • 书籍推荐《Redis设计与实现》。

MySQL

  • 索引、B+Tree、锁(间隙锁、索引记录锁、共享锁、next-key lock…)、MVCC、事务隔离级别、主从同步、缓存等等,需要懂原理,这些内容经常会被作为面试的考点。
  • 关于MySQL的学习同样可以参考官方文档,但没有中文的,这里给出一些笔者对官方文档的翻译文章:https://blog.csdn.net/heroqiang/article/category/7374271

数据结构和算法

  • 这一项是我的弱项,大学数据结构和算法的课基本都睡觉了- -!。只能靠平时个人的积累和大学的基础了。
  • LRU Cache,这个可以了解一下,问的挺多,java中一般基于LinkedHashMap实现,Mybatis和Dubbo中都有LRU Cache的实现,要了解一下实现原理。
  • 排序、去重、大文件大数据量求最大值最小值、求两个集合的交集等等,这些算法应该都是比较常问到的,不过笔者这次面试经历没有遇到。

RPC框架

  • 世面中比较常见的RPC框架,至少要懂一个,例如京东的JSF(已经开源)、阿里的HSF(开源版为Dubbo)等,看过源码最好,至少懂原理,例如底层的网路通信框架、序列化协议、架构、容灾、服务的注册与发现等。

MQ

  • 至少掌握一个,对于MQ怎么保证消息不丢、怎么保证顺序、持久化、消费幂等性、pull和push模式的各自优缺点,需要掌握。
  • 最好能够多了解业界主流的一些MQ的特性,如kafka、Active MQ、Rabbit MQ、Rocket MQ等,会问到它们的区别和特性。
  • 推荐一篇美团技术的文章:https://tech.meituan.com/mq_design.html

Netty

  • 如果你的简历上体现了Netty,那估计一定会问到,Reactor模式、NIO、BIO的一些知识需要掌握,延伸下去各种I/O的特性、I/O多路复用、epoll、select/poll、AIO等都需要了解。
  • 同样阅读过源码最好,有兴趣的同学可以参考笔者的Netty源码解析系列文章。
    https://blog.csdn.net/heroqiang/article/category/7702929
  • 书籍推荐《Netty权威指南》。

Zookeeper

  • zookeeper的角色(都有什么、都是干嘛的),选举leader过程、zxid、watcher机制、分布式锁、羊群效应、崩溃恢复和消息广播的过程等。
  • 另外可能会牵扯到一些分布式事务的内容,也比较重要。
  • 书籍推荐《从Paxos到zookeeper分布式一致性原理与实践》。

JAVA

  • 多线程:不用多说,必问这方面的问题,包括jdk1.5的concurrent包里面的各种并发工具,ConcurrentHashMap、AQS、线程池等,读过源码最好,原理需要懂,synchronized关键字需要懂底层如何控制的。推荐书籍《java并发编程实战》。
    https://blog.csdn.net/heroqiang/article/category/7474432
  • 内存模型&GC:必考,这个不多说,相信大多数人都是有所了解的。推荐书籍《深入理解java虚拟机》。这里还有一个比较重要的点就是当线上出现内存问题、线程问题的时候如何排查,这个主要考察的是对jstack、jmap、jstat的等jdk工具的掌握程度。
  • 集合框架:除了上面提到的ConcurrentHashMap,包括HashMap、各种List、Set等,最好都有所了解,一个比较常见的问题是HashMap为什么线程不安全(在多线程环境下HashMap在扩容时可能出现环状链表导致CPU100%)。
  • java新特性,最好也能了解一下,java基础很重要,需要扎实。

Nginx

  • 与其他类似的WEB服务器相比有什么优点,为什么会有这样优点,主要考察对nginx进程模型的理解。
  • 如何实现平滑重启。
  • 可以了解一些扩展的应用,例如nginx+lua实现在nginx层限流、缓存、降级等。
  • 能了解OpenResty更好。

问题解决方案

  • 给一些场景,要求出方案,比如秒杀啊、大促啊这种高并发大流量的场景的方案。
  • 一些异常情况的降级、后备方案,比如依赖的某个中间件或者数据库挂了,机房挂了等等,要如何设计容灾、降级等方案。
  • 针对你简历中写的系统,提出一些问题,要求给出方案。

猜你喜欢

转载自blog.csdn.net/heroqiang/article/details/81110238
今日推荐