2023,可谓是招聘面试最难季。不少大厂,如腾讯、字节的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言。今天不谈其它,就说说我作为面试官面试的那些事儿。
从某电商项目负责人的算起,再到后来的首席架构师,我前前后后面试了至少 300 多位求职者。不敢说成功入职的每个同事都发展得特别好,但大部分人来说还是很不错的。
过硬的技术功底是最起码的考核要求。不少来应聘的朋友底子还是有的,但知识面太窄了。那么对于互联网大厂,尤其是电商行业来说,都会重点考核哪些呢?最近我将这些年自己常问的考核知识整理了一下,不下 100 道,其中涵盖了不少大厂必考点、高频点、加薪点,这些也是作为开发人来说日常项目中经常遇到的踩坑点。
为了方便大家,我把这些点做了一个归类,我把关于这些问题的拆解与思考,整理成一个 pdf,限于篇幅,这里就不一一列出了。需要的同学可以文末领取,希望能从中有所启发、收获。
这里直接给大家分享这些面试真题 ,具体有:
JVM
-
java 中会存在内存泄漏吗,请简单描述。
-
64 位 JVM 中,int 的长度是多数?
-
Serial 与 Parallel GC 之间的不同之处?
-
32 位和 64 位的 JVM,int 类型变量的长度是多数?
-
Java 中 WeakReference 与 SoftReference 的区别?
-
JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用
-
怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
-
32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
-
JRE、JDK、JVM 及 JIT 之间有什么不同?
-
解释 Java 堆空间及 GC?
-
JVM 内存区域
-
程序计数器(线程私有)
-
虚拟机栈(线程私有)
-
本地方法区(线程私有)
-
你能保证 GC 执行吗?
-
怎么获取 Java 程序使用的内存?堆使用的百分比?
-
Java 中堆和栈有什么区别?
-
描述一下 JVM 加载 class 文件的原理机制
mysql
-
数据库存储引擎
-
InnoDB(B+树)
-
TokuDB( Fractal Tree-节点带数据)
-
MyIASM
-
Memory
-
数据库引擎有哪些
-
InnoDB 与 MyISAM 的区别
-
索引
-
常见索引原则有
-
数据库的三范式是什么
-
第一范式(1st NF - 列都是不可再分)
-
第二范式(2nd NF- 每个表只描述一件事情)
-
第三范式(3rd NF- 不存在对非主键列的传递依赖)
-
数据库是事务
-
SQL 优化
-
简单说一说 drop、delete 与 truncate 的区别
-
什么是视图
-
什么是内联接、左外联接、右外联接?
-
并发事务带来哪些问题?
Redis
-
什么是 Redis?
-
Redis 与其他 key-value 存储有什么不同?
-
Redis 的数据类型?
-
使用 Redis 有哪些好处?
-
Redis 相比 Memcached 有哪些优势?
-
Memcache 与 Redis 的区别都有哪些?
-
Redis 是单进程单线程的?
-
一个字符串类型的值能存储最大容量是多少?
-
Redis 持久化机制
-
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
-
热点数据和冷数据是什么
-
单线程的 redis 为什么这么快
-
redis 的数据类型,以及每种数据类型的使用场景
-
redis 的过期策略以及内存淘汰机制
-
Redis 常见性能问题和解决方案?
-
为什么 Redis 的操作是原子性的,怎么保证原子性的?
-
Redis 事务
-
Redis 的持久化机制是什么?各自的优缺点?
MongoDB
-
mongodb 是什么?
-
mongodb 有哪些特点?
-
你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用 NoSQL 数据库?说一说 NoSQL 数据库的几个优点?
-
NoSQL 数据库有哪些类型?
-
MySQL 与 MongoDB 之间最基本的差别是什么?
-
你怎么比较 MongoDB、CouchDB 及 CouchBase?
-
MongoDB 成为最好 NoSQL 数据库的原因是什么?
-
journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?
-
分析器在 MongoDB 中的作用是什么?
-
名字空间(namespace)是什么?
-
如果用户移除对象的属性,该属性是否从存储层中删除?
-
能否使用日志特征进行安全备份?
-
允许空值 null 吗?
-
更新操作立刻 fsync 到磁盘?
-
如何执行事务/加锁?
-
为什么我的数据文件如此庞大?
-
启用备份故障恢复需要多久?
-
什么是 master 或 primary?
Dubbo
-
为什么要用 Dubbo?
-
Dubbo 的整体架构设计有哪些分层?
-
默认使用的是什么通信框架,还有别的选择吗?
-
服务调用是阻塞的吗?
-
一般使用什么注册中心?还有别的选择吗?
-
默认使用什么序列化框架,你知道的还有哪些?
-
服务提供者能实现失效踢出是什么原理?
-
服务上线怎么不影响旧版本?
-
如何解决服务调用链过长的问题?
-
说说核心的配置有哪些?
-
Dubbo 推荐用什么协议?
-
同一个服务多个注册的情况下可以直连某一个服务吗?
-
画一画服务注册与发现的流程图?
-
Dubbo 集群容错有几种方案?
-
Dubbo 服务降级,失败重试怎么做?
-
Dubbo 使用过程中都遇到了些什么问题?
-
Dubbo Monitor 实现原理?
-
Dubbo 用到哪些设计模式?
试前最重要的当然是面试的表达技巧了,这个不提前做好准备的话技术强也无法将自身的优势完美地表现出来。
-
面试软实力
-
为什么说简历很重要?
-
先从面试来说
-
再从面试说起
-
必知必会的几点
-
必须了解的两大法则
-
项目经历怎么写?
-
专业技能怎么写
-
排版注意事项
-
其他一些小 tips
-
你对我们公司有什么想问的吗?
-
很多人都倒在自我介绍上
-
如何与 HR 交谈,如何谈薪水
-
HR 最喜欢问程序员的 20 个问题
-
面试中的礼仪与举止
软实力这一块搞定了当然就是技术栈的梳理了
-
Java 基础
-
面向对象和面向过程的区别
-
八种基本数据类型的大小,以及他们的封装类
-
标识符的命名规则。
-
instanceof 关键词的作用
-
Java 自动装箱与拆箱
-
重载和重写的区别
-
equals 与==的区别
-
Hashcode 的作用
-
Java 创建对象有几种方式?
-
获取一个类 Class 对象的方式有哪些?
-
ArrayList 和 LinkedList 的区别有哪些?
-
用过 ArrayList 吗?说一下它有什么特点?
-
有数组了为什么还要搞个 ArrayList 呢?
-
说说什么是 fail-fast?
-
说说 Hashtable 与 HashMap 的区别
-
HashMap 的长度为什么是 2 的 N 次方呢?
-
HashMap 与 ConcurrentHashMap 的异同
-
红黑树有哪几个特征?
-
说说你平时是怎么处理 Java 异常的
-
说一下深拷贝和浅拷贝?
-
JVM
-
多线程并发
-
Spring 篇
-
什么是 spring?
-
你们项目中为什么使用 Spring 框架?
-
Autowired 和 Resource 关键字的区别?
-
依赖注入的方式有几种,分别是什么?
-
说说你对 Spring MVC 的理解
-
SpringMVC 常用的注解有哪些?
-
谈谈你对 Spring 的 AOP 理解
-
Spring AOP 和 AspectJ AOP 有什么区别?
-
Spring 框架中的单例 Bean 是线程安全的么?
-
Spring 是怎么解决循环依赖的?
-
说说事务的隔离级别
-
说说事务的传播级别
-
Spring 事务的实现方式
-
Spring 框架的事务管理有哪些优点?
-
事务三要素是什么?
-
事务注解的本质是什么?
-
MyBatis
-
SpringBoot
-
为什么要用 SpringBoot
-
Spring Boot 的核心注解是哪个?它主要是由哪几个注解组成的?
-
运行 Spring Boot 有哪几种方式?
-
如何理解 Spring Boot 中的 Starters?
-
如何在 Spring Boot 启动的时候运行一些特定的代码?
-
Spring Boot 需要独立的容器运行吗?
-
Spring Boot 中的监视器是什么?
-
如何使用 Spring Boot 实现异常处理?
-
你如何理解 Spring Boot 中的 Starters?
-
springboot 常 用的 starter 有哪些
-
SpringBoot 实现热部署有哪几种方式?
-
如何理解 Spring Boot 配置加载顺序?
-
如何集成 Spring Boot 和 ActiveMQ?
-
MySQL
-
数据库的三范式是什么
-
MySQL 数据库弓|擎有哪些
-
说说 InnoDB 与 MyISAM 的区别
-
数据库的事务
-
索引是什么
-
SQL 优化手段有哪些
-
简单说一说 drop. delete 与 truncate 的区别
-
什么是视图
-
什么是内联接、左外联接、右外联接?
-
并发事务带来哪些问题?
-
事务隔离级别有哪些?MySQL 的默认隔离级别是?
-
大表如何优化?
-
MySQL 索引类型有哪些?
-
什么时候不要使用索引呢?
-
说说什么是 MVCC?
-
MVCC 可以为数据库解决什么问题?
-
说说 MVCC 的实现原理
-
MySQL 事务隔离级别?
-
请说说 MySQL 数据库的锁?
-
说说什么是锁升级?
-
说说悲观锁和乐观锁
-
怎样尽量避免死锁的出现?
-
使用 MySQL 的素引应该注意些什么?
-
CHAR 和 VARCHAR 的区别?
-
主键和候选健有什么区别?
-
主键与素引有什么区别?
-
MySQL 如何做到高可用方案?
-
微服务
-
Nginx&MQ
-
Linux
-
绝对路径用什么符号表示?当前目录、 上层目录用什么表示?目录用什么表示?切换目录用什么命令?
-
怎么查看当前进程? 怎么执行退出?怎么查看当前路径?
-
查看文件有哪些命令
-
列举几个常用的 Linux 命令
-
你平时是怎么查看日志的?
-
ZK
-
Redis
-
为什么要用缓存
-
使用 Redis 有哪些好处?
-
什么是 Redis?
-
为什么使用 Redis 而不是用 Memcache 呢?
-
为什么 Redis 单线程模型效率也能那么高?
-
说说 Redis 的线程模型
-
为什么 Redis 需要把所有数据放到内存中?
-
Redis 的同步机制了解是什么?
-
pipeline 有什么好处,为什么要用 pipeline?
-
Redis 持久化方式有哪些?以及有什么区别?
-
持久化有两种,那应该怎么选择呢?
-
怎么使用 Redis 实现消息队列?
-
说说你对 Redis 事务的理解
-
Redis 为什么设计成单线程的?
-
什么是 bigkey?会存在什么影响?
-
熟悉哪些 Redis 集群模式?
-
Memcache 与 Redis 的区别都有哪些?
-
单线程的 redis 为什么这么快
-
redis 的数据类型,以及每种数据类型的使用场景
-
redis 的过期策略以及内存淘汰机制
-
Redis 为什么是单线程的
-
Redis 常见性能问题和解决方案?
-
为什么 Redis 的操作是原子性的,怎么保证原子性
-
分布式
-
网络
-
HTTP 响应码有哪些?分别代表什么含义?
-
Forward 和 Redirect 的区别?
-
Get 和 Post 请求有哪些区别?
-
说说 TCP 与 UDP 的区别,以及各自的优缺点
-
说一下 HTTP 和 HTTPS 的区别
-
说说 HTTP、TCP、Socket 的关系是什么?
-
说一下 HTTP 的长连接与短连接的区别
-
TCP 为什么要三次握手,两次不行吗?为什么?
-
说一下 TCP 粘包是怎么产生的?怎么解决粘包问题
-
如何理解 HTTP 协议是无状态的?
-
什么是长连接和短连接?
-
长连接和短连接的优缺点?
-
说说长连接短连接的操作过程
-
说说 TCP 三次握手和四次挥手的全过程
-
OSI 的七层模型都有哪些?
-
OSI 这样分层有什么好处?
-
说说 TCP/IP 四层网络模型
-
说说域名解析详细过程?
-
IP 地址分为几类,每类都代表什么,私网是哪些?
-
设计模式
-
说说什么是单例模式
-
说说你对代理模式的理解
-
说说工厂模式
-
抽象工厂模式
-
装饰器模式是什么
-
代理模式和装饰器模式有什么区别?
-
模板方法模式
-
知道享元模式吗?
-
元模式和单例模式的区别?
-
说说策略模式在我们生活中的场景?
-
知道是责任链模式吗?
-
了解过适配器模式么?
-
知道观察者模式吗?
-
Maven&Tomcat&ES&Git
最后
我们从踏入这一行开始,职业生涯里肯定会遇到很多场大大小小的面试,不管是凯旋还是败北,每一次面试都会是我们的提升的一个机会!