前言
最近靠近年末,也算面试了不少的公司,美团,蚂蚁,饿了么,点我达,51,达达等,都拿到了offer,所以给大家分享一下互联网面试常见的面试要点。希望大家能够巩固这些知识,夯实基础,都能找一个好工作。
数据库
mysql
持久化数据库主流的一般都是使用mysql来做的,所以mysql这一块很重要,和语言无关,mysql这边比较推荐的书籍是《高性能mysql》
核心关注点是:
1. 索引的底层数据结构,包括联合索引,不同引擎的底层数据结构是不一样的
2. 了解explain这个操作,知道一些核心的信息,如何去优化数据库
3. 分库分表,垂直分表和水平分表,多数据源的问题
4. 数据库的四层隔离级别,数据库事务的实现,数据库的乐观锁和悲观锁
redis
redis的主要功能是用来做缓存层,提高系统的吞吐量。是一个非常主流的nosql数据库,主要推荐的书籍是《redis设计与实现》
redis的主要知识点:
1. redis的线程模型以及IO模型(极其重要),甚至可能会问到unix系统的核心问题,推荐了解linux系统
2. redis的底层所有数据结构最好都要了解,尤其是底层的intset和skiplist,特别重要
3. redis的持久化,集群等内容,最好了解一下redis的集群规范,这个在redis的官网上面有,redis.io
memcache
memcache是一个应用非常广泛的缓存中间件,主要用来进行key,value的存储,可以存储对象,需要对象进行序列化
1. 特点,以及和redis的优缺点比较,以及分布式情况下的使用;
分布式中间件
zookeeper
zookeeper是一种使用场景非常广泛的分布式中间件,主要用来协调分布式服务的运行,推荐的书籍是《从paxos到zookeeper,分布式一致性原理与实践》
1. zookeeper分布式锁的实现,以及如何防止这种分布式锁的羊群效应
2. zookeeper的使用场景,包括服务发现,分布式一致性场景等等,知道的越多越好,并知道原理
3. zookeeper的原理本质
kafka
kafka是比较热门的分布式系统消息中间件,主要用来进行系统解耦,通过kafka传递一些对一致性没有强时间要求的消息
1. kafka的一些主要概念,推荐看kafka官网阅读文档,非常清晰
2. kafka如何保障相对有序性,数据不丢失等
3. 你对kakfa的应用场景
netty
如果想走java,这一块是比较大的加分项,尤其是一些偏向底层的公司,推荐看的书是《netty权威指南》
1. netty的优缺点,应用场景
2. 你对netty的应用以及对jdk nio的理解
重要框架
spring
在java的技术体系中,spring所占的比例相当大,可以理解为现在所有互联网公司的基础就是spring,所以最重要
推荐两本书,一本是《spring实战》,一本是《精通spring4.x企业应用实战》
1. spring的启动流程,bean的生命周期等非常重要的基础内容
2. spring的数据库事务
3. spring的一些定制化内容如何实现,你对spring的应用
mybatis
基础的orm框架,用来操作数据库,推荐看一下《深入浅出mybatis》就差不多了
springmvc
了解mvc的核心概念以及用法就差不多了,在了解spring的过程中顺带了解