支付宝-国际事业部-高级Java工程师

# 1.笔试题

# 1.1大文件查找前100个最大的数字

有一个文本文件(data.txt)里面每行为一个数字切文件预计有100W行左右,请以最快的速度在一台主机4核cpu/1G内存的主机上找出前100个最大的数字,并且输出其在文件所在行。 注意:请尽量提供该程序在生产运行所需全部信息。

# 1.2实现LRU算法(禁用LinkedHashMap)

LRU(Least recently used 最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高” 设计一个实现以下接口的LRU缓存方法,不能使用LinkedHashMap.

 public interface LruCache<K, V> {

    /**
     * Set the capacity of the total cache num
     * 
     * @param capacity
     *            capacity
     */
    void setCapacity(int capacity);

    /**
     * Update cache according to LRU definition. This time complexity of this method should be O(1).
     * 
     * @param cacheKey
     *            key
     * @param cacheValue
     *            value
     */
    void put(K cacheKey, V cacheValue);

    /**
     * 获取元素
     * 
     * @param cacheKey
     *            元素key
     * @return value
     */
    V get(K cacheKey);

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 2.面试题

# 跳表SkipList和ConcurrentSkipListMap源码分析

# JDK动态代理实现原理

# Spring AOP 实现原理

# Spring Bean 的创建流程

# CAP原则

# 分布式系统接口幂等性设计

# MySQL索引数据结构

# Redis缓存雪崩和穿透

# Redis分布式锁

# 线程池

# 高并发解决方案

# CAS

# Java锁的种类

# hashCode和equals区别

# HashMap 数据结构

# NIO、AIO、BIO区别

# 布隆过滤器

# MySQL日志

# 热点账户

# 分布式事务解决方案

# Redis底层数据结构

# MySQL 事务隔离界别

# 彻底弄懂MySQL日志

# 接口性能优化方案

# 网关限流