金三银四俗称跳槽黄金期,很多同学都想趁着这段时间拿高薪,去更牛逼的公司工作,认识更多大牛,提升自己的职场竞争力。
那怎样才能通T面试官的考核?怎样成为一名Offer收割机?
之前讲过收割Offer有一个最直接的公示:Offer=硬实过BAT面试官的考核?怎样成为一名Offer收割机?
之前讲过收割Offer有一个最直接的公示:Offer=硬实力*软实力*好的心态,三者缺一不可。
一、硬实力
这里说的硬实力,也就是技术上的真实积累。
怎么来体现你的技术实力?我总的分为:技术深度和技术广度这两方面。
技术广度通俗的讲,就是你熟悉该技术点的使用以及基本原理。一般面试官在面试首轮会问很多技术点,来考核你是否能正确使用。
技术深度通俗的讲,就是深入技术原理的同时,还知道优劣势比较,以及同类产品的横向和纵向比较,以及非常重要的应用场景。关于这一点,小编在这做个分享。比如:消息队列MQ,市面有哪些MQ,RabbitMQ、RocketMQ、ActiveMQ..等等他们各自的架构设计,优劣势比较,各自的应用场景(并发量和使用优劣比较等)。以及MQ的消息去重,如何保证消息不丢失等。这样就沿着MQ这个话题,深入的去考核你对消息队列中间件的掌握程度。
另附一张思维导图供大家学习参考!
02 技术实力包含哪些
- 网络编程
- Http和Https
- OSI7层模型
- 网络安全防范:CSRF、XSS等
- 算法和数据结构
- 数组、链表、二叉树、队列
- 红黑树、AVL树、Hash树、Tire树、B树、B+树
- 各类排序算法以及复杂度分析(快排、归并、堆)
- 二分查找和各种变种的二分查找
- 手写算法等
- JVM
- 内存回收算法
- 垃圾收集器
- 性能调优
- 并发编程
- 多线程
- NIO
- 并发容器
- 并发工具类
- ...等
- 数据库
- mysql和nosql
- 索引、慢查询、事务
- 大数据方案:分库分表、读写分离、数据主从同步
- 分布式架构设计
- Redis问得比较多(建议重点掌握)
- 消息队列Kafka、RabbitMQ、RocketMQ(阿里会问)
- 微服务:Dubbo、Spring Cloud等
- 负载均衡
- 分布式理论:CAP、BASE等
- 应用系统拆分
- 分布式锁、分布式事务、分布式全局唯一ID...等
03软实力
软实力在面试过程中也尤为重要(有时候真的要更重要),主要是指和面试官的沟通,对一个问题的阐述方式和表达方式,逻辑思维能力等。
面试过程全程微笑,项目描述需要严谨的表述,个人的优缺点基本要做到随口而出..等这些其实就是软实力的体现。
技术面试题
MySQL55道面试题
- 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
- Mysql 的技术特点是什么?
- Heap 表是什么?
- Mysql 服务器默认端口是什么?
- 与 Oracle 相比,Mysql 有什么优势?
- 如何区分 FLOAT 和 DOUBLE?
- 区分 CHAR_LENGTH 和 LENGTH?
- 请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 在 Mysql 中 ENUM 的用法是什么?
- 如何定义 REGEXP?
- CHAR 和 VARCHAR 的区别?
- 列的字符串类型可以是什么?
- 如何获取当前的 Mysql 版本?
- Mysql 中使用什么存储引擎?
- Mysql 驱动程序是什么?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?
- 主键和候选键有什么区别?
- 如何使用 Unix shell 登录 Mysql?
- myisamchk 是用来做什么的?
- MYSQL 数据库服务器性能分析的方法命令有哪些?
- 如何控制 HEAP 表的最大尺寸?
- MyISAM Static 和 MyISAM Dynamic 有什么区别?
- federated 表是什么?
- 如果一个表有一列定义为 TIMESTAMP,将发生什么?
- 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?
- 怎样才能找出最后一次插入时分配了哪个自动增量?
- 你怎么看到为表格定义的所有索引?
- LIKE 声明中的%和_是什么意思?
- 如何在 Unix 和 Mysql 时间戳之间进行转换?
- 列对比运算符是什么?
- 我们如何得到受查询影响的行数?
- Mysql 查询是否区分大小写?
- LIKE 和 REGEXP 操作有什么区别?
- BLOB 和 TEXT 有什么区别?
- mysql_fetch_array 和 mysql_fetch_object 的区别是什么?
- 我们如何在 mysql 中运行批处理模式?
- MyISAM 表格将在哪里存储,并且还提供其存储格式?
- Mysql 中有哪些不同的表格?
- ISAM 是什么?
- InnoDB 是什么?
- Mysql 如何优化 DISTINCT?
- 如何输入字符为十六进制数字?
- 如何显示前 50 行?
- 可以使用多少列创建索引?
- NOW()和 CURRENT_DATE()有什么区别?
- 什么样的对象可以使用 CREATE 语句创建?
- Mysql 表中允许有多少个 TRIGGERS?
- 什么是非标准字符串类型?
- 什么是通用 SQL 函数?
- 解释访问控制列表
- MYSQL 支持事务吗?
- mysql 里记录货币用什么字段类型好
- MYSQL 数据表在什么情况下容易损坏?
- mysql 有关权限的表都有哪几个?
- Mysql 中有哪几种锁?
JVM 20道面试题
- 内存模型以及分区,需要详细到每个区放什么。
- 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
- 对象创建方法,对象的内存分配,对象的访问定位。
- GC 的两种判定方法
- SafePoint 是什么
- GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
- GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
- Minor GC 与 Full GC 分别在什么时候发生?
- 几种常用的内存调试工具:jmap、jstack、jconsole、jhat
- 类加载的几个过程?
- JVM 内存分哪几个区,每个区的作用是什么?
- 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
- 简述 java 垃圾回收机制?
- java 中垃圾收集的方法有哪些?
- java 内存模型
- java 类加载过程?
- 简述 java 类加载机制?
- 类加载器双亲委派模型机制?
- 什么是类加载器,类加载器有哪些?
- 简述 java 内存分配与回收策率以及 Minor GC 和Major GC
Redis 46道面试题
- 什么是Redis?
- Redis相比memcached有哪些优势?
- Redis支持哪几种数据类型?
- Redis主要消耗什么物理资源?
- Redis的全称是什么?
- Redis有哪几种数据淘汰策略?
- edis官方为什么不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- 为什么Redis需要把所有数据放到内存中?
- Redis集群方案应该怎么做?都有哪些方案?
- Redis集群方案什么情况下会导致整个集群不可用?
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
- Redis如何设置密码及验证密码?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
- 怎么测试Redis的连通性?
- Redis中的管道有什么用?
- 怎么理解Redis事务?
- Redis事务相关的命令有哪几个?
- Redis如何做内存优化?
- Redis回收进程如何工作的?
- Redis回收使用的是什么算法?
- Redis如何做大量数据插入?
- 为什么要做Redis分区?
- 你知道有哪些Redis分区实现方案?
- Redis分区有什么缺点?
- Redis持久化数据和缓存怎么做扩容?
- 分布式Redis是前期做还是后期规模上来了再做好?为什么?
- Twemproxy是什么?
- 支持一致性哈希的客户端有哪些?
- Redis与其他key-value存储有什么不同?
- Redis的内存占用情况怎么样?
- 都有哪些办法可以降低Redis的内存使用情况呢?
- 一个Redis实例最多能存放多少的keys?
- Redis常见性能问题和解决方案?
- Redis提供了哪几种持久化方式?
- 如何选择合适的持久化方式?
- 修改配置不重启Redis会实时生效吗?
多线程 48道面试题
- 并发编程三要素?
- 实现可见性的方法有哪些?
- 多线程的价值?
- 创建线程的有哪些方式?
- 创建线程的三种方式的对比?
- 线程的状态流转图
- Java线程具有五中基本状态
- 什么是线程池?有哪几种创建方式?
- 四种线程池的创建
- 线程池的优点?
- 常用的并发工具类有哪些?
- CyclicBarrier和CountDownLatch的区别
- synchronized的作用?
- volatile关键字的作用
- 什么是CAS
- CAS的问题
- 什么是Future?
- 什么是AQS
- AQS支持两种同步方式
- ReadWriteLock是什么
- FutureTask是什么
- synchronized和ReentrantLock的区别
- 什么是乐观锁和悲观锁
- 线程B怎么知道线程A修改了变量
- synchronized、volatile、CAS比较
- sleep方法和wait方法有什么区别?
- ThreadLocal是什么?有什么用?
- 为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用
- 多线程同步有哪几种方法?
- 线程的调度策略
- ConcurrentHashMap的并发度是什么
- Linux环境下如何查找哪个线程使用CPU最长
- Java死锁以及如何避免?
- 死锁的原因
- 怎么唤醒一个阻塞的线程
- 不可变对象对多线程有什么帮助
- 什么是多线程的上下文切换
- 如果你提交任务时,线程池队列已满,这时会发生什么
- Java中用到的线程调度算法是什么
- 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?
- 什么是自旋
- Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?
- 单例模式的线程安全性
- Semaphore有什么作用
- Executors类是什么?
- 线程类的构造方法、静态块是被哪个线程调用的
- 同步方法和同步块,哪个是更好的选择?
- Java线程数过多会造成什么异常?
消息队列、Kafka、MQ、数据库、算法、数据结构等就不一一展示了(文末有面试题列表)