前言
每到年后,总会有很多人跳槽。可我发现一个奇怪的现象:那些跳槽的人,总是从一个坑,跳进令一个坑中。毕竟一年过去了,会的还是原来的知识,人的身价就摆在那里,无论怎么折腾,也不会拿到更好的offer。这样的跳槽其实没有意义,也许就有人问,现在都是互联网寒冬了,要怎样才能把握好机会,拿到跟好跟适合自己的offer呢?技术才是我们程序员的立身之本,在再好的机遇面前我们也要有这个实力去抓住它。
快到年后跳槽季,假如我是面试官,我会这样虐你,在这我整理了一些大型互联网公司面试部分常问的面试题及面试经验,希望在你的求职路上有一定的帮助。也希望这份面试题能够祝你一臂之力!
自我和项目相关
- 自我介绍
- 你觉得自己的优点是?你觉得自己有啥缺点?
- 你有哪些 offer?
- 你为什么要离开上家公司?你上家公司在xxx,我们公司在xxx,离这么远为什么要选择我们这里?
- 上家公司的同事和领导是怎么评价你的?
- 介绍下你的上家公司是做哪块的吧
- 在上家公司你做了哪些项目?
- 你在项目中是什么角色?
- 这个项目的数据量和并发量多大?
- 这个项目用的什么技术?
- 项目过程中有遇到什么很印象深刻的问题吗?
- 是怎么解决的这些问题?
- 项目有没有还可以继续优化的地方?
- 该怎么优化?有什么思路没?
- 叫你设计一个并发xxx,数据存储量xxx 量级的系统,你该如何设计?从你知道的点尽可能的多说出些?
Java 基础
- Object 对象的方法有哪些?分别有什么作用?该什么场景用?
- Integer 的常量缓存池
- Java 特性?什么是多态?举个例子
- 重载重写的区别?
- 画下 HashMap 的结构图?HashMap 、 HashTable 和 ConcurrentHashMap 的区别?使用场景分别是?
- HashMap 中怎么解决冲突的?
- ConcurrentHashMap 和 HashTable 中线程安全的区别?为啥建议用 ConcurrentHashMap ?能把 1. ConcurrentHashMap 里面的实现详细的讲下吗?
- 保证线程安全的还有其他的方式吗?
- 讲下 Synchronized?
- 讲下 ReentrantLock 可重入锁? 什么是可重入锁?为什么要设计可重入锁?
- Synchronized 和 RecentLock 有什么区别?这两个有没有深入了解源码?
- 讲下 Volatile 吧?他是怎样做到同步的?
- Volatile 为什么不支持原子性?举个例子
- Atomic 怎么设计的?有用过里面的类吗?
- 线程安全类和线程不安全的类,项目使用的时候你会怎么选择?怎么判断项目代码哪里会有线程不安全问题?
- Map、List、Set 分别说下你了解到它们有的线程安全类和线程不安全的类?
- TreeSet 清楚吗?能详细说下吗?
- ThreadLocal 了解吗?项目有用过吗?可以说说
- JUC 里面你还知道什么其他的类吗?比如 CountDownLatch、Condition
- 从源码详细说下 Java 里面的线程池吧,使用线程池有什么要注意的地方?你们公司有规范吗?
JVM
- JAVA 类加载器
- Java 内存结构(注:不是 Java 内存模型,别搞混)
- 怎么判断对象是否可 GC?Java 对象有哪些引用类型?有什么区别?
- OOM 出现的有哪些场景?为什么会发生?
- Minor GC 和 Full GC 有什么区别?分析过 GC 日志吗?
- 说下你知道的垃圾回收算法
- 说下你知道的垃圾收集器
- CMS 和 G1 的区别知道吗?使用场景分别是?你项目中用的是哪个?
- 你还知道哪些 JVM 调优参数?
- 假如线上服务发生 OOM,有哪些措施可以找到问题?
- 假如线上服务 CPU 很高该怎么做?有哪些措施可以找到问题?
- 假如线上应用频繁发生 Full GC,有哪些措施可以找到问题?
- 一般线上环境遇到 JVM 问题,你会使用哪些工具来分析?找到问题后又该如何去解决呢?
Spring
- 说下你对 Spring 生态的了解?
- 说下你对 Spring AOP 和 IOC 的理解?看过实现原理吗?
- 说下 Bean 在 Spring 中的生命周期?
- 讲下你知道的 Spring 注解有哪些?该什么场景使用?
- Spring 事务知道吗?有了解过吗?
- 说下你刚才说的 SpringBoot 吧,你觉得 SpringBoot 有什么优点?
- SpringBoot 自动化配置是怎么做的?有看过实现源码吗?
- Spring Boot 中最核心的注解 SpringBootApplication 有看过源码分析过吗?
- 你的项目中 SpringBoot 用到了哪些和其他技术栈整合的?
- 使用 Spring 或者 SpringBoot 有遇到过什么印象深刻的问题吗?当时是怎么解决的?
数据库
- 你的项目使用的是什么数据库?
- 你对数据库了解多少?说下数据库的索引实现和非主键的二级索引
- 说下 MySQL 的索引原理
- 讲下 InnoDB 和 MyISAM 的区别?使用场景是?
- 有和 ElasticSearch 的索引原理对比过吗?
- 如何判断一个查询 sql 语句是否使用了索引?
- 数据库事务特性和隔离级别
- 项目数据库表是你设计的吗?一般要注意什么?如何考虑扩展性?
- 项目 MySQL 的数据量和并发量有多大?量大后的影响有哪些,有考虑吗?SQL 调优有哪些技巧?
- 说下你项目里面关于数据库印象最深的一个问题?当时是怎么解决的
其他
- 描述下网页一个 Http 请求,到后端的整个请求过程
- 有比较过 Http 和 RPC 吗?如果叫你设计一个高性能的 Http 或者 RPC,你会从哪些方面考虑?
- 项目中我看使用了 xxx (ElasticSearch、Hbase、Redis、Flink 等),有深入了解它们的原理和懂点调优技巧吗?
- 项目中我看使用了 xxx (ElasticSearch、Hbase、Redis、Mysql 等),有深入了解它们数据同步是怎么做吗?
- 项目中我看使用了 xxx (ElasticSearch、Hbase、Redis、Mysql 等),有深入了解它们常见的监控指标吗?
- 如果叫你设计一个秒杀系统,你会从哪些方面考虑?
- 如果叫你设计一个电商系统,你会从哪些方面考虑?
- 如果叫你设计一个监控告警系统,你会从哪些方面考虑?
总结
本文的面试题以 HR & 技术官角度常问的面试题,技术方面从 Java 基础、JVM、Spring、数据库、拓展题等方面考察你,当然面试官可能还会问些其他的技术点,我一篇文章也难以概全。总的来说,还是得多准备充分,面试时灵活答辩,相信你最后能拿到满意的 offer!加油,骚年!
网友评论