关于面试:最近的一些Java面试小结

45次阅读

共计 2951 个字符,预计需要花费 8 分钟才能阅读完成。

本文首发于微信公众号【WriteOnRead】,欢送关注。

前言

前段时间陆续面试了一些大中小公司,踩了不少坑,挂了很多,同时也有不少感悟和播种。这里想把那段经验记录一下,如果能对亲们有所帮忙就再好不过了。

面试的过程其实也是一个自我认识和学习的过程,即使临时没打算跳槽,隔段时间进来面一面对本人还是有些益处的:不仅能够评估一下本人在市场的价值和竞争力,同时也能理解一些新技术、更新一下本人的技术栈。

而且在一个中央待久了,可能不盲目的就会陷入到一种「舒服区」,长此以往,就像温水里的青蛙,万一哪天被“优化”了可能会手足无措。

本文次要从「我的项目」和「技术」两个方面进行总结,除此之外还有一些比拟开放式的问题。

除夕过了,“金三银四”还会远吗?春节后有想法的亲们,能够嗨起来了!

我的项目

有人说:三年一道坎。

对于工作三年左右的搭档们来说,「我的项目经验」堪称重中之重,能够说比具体的技术点更重要。

技术点其实大同小异,有些长期刷刷题就能理解个大略。但我的项目经验往往难以长期假造,如果不是本人实在做过的我的项目、或者没有充沛的筹备,一旦面试官问得略微深刻很可能 hold 不住,面试扣分不少、甚至可能间接挂掉。

因而不少面试官喜爱从我的项目动手,抽丝剥茧、步步深刻,通过我的项目把技术点串起来考查。

不同人的我的项目千差万别,但还是有一些独特亮点的:比方高并发场景,简单的架构设计,JVM 调优及问题排查等。

这些亮点有的话诚然更好,但如果平时 CRUD 居多、没太多的亮点,其实也不用太慌,技术亮点不多的话,能够多思考一些业务上的亮点,比方:

  • 业务模型比较复杂
  • 对业务整体的架构设计很相熟
  • 业务模块拆分比拟正当
  • 本人在业务中做过哪些扩大和优化?
  • 业务数据的上下游流转是怎么的?
  • 遇到过什么问题,如何解决的?
  • 等等

这些其实也是亮点,能够让面试官看到你平时对业务有本人的思考和了解,而不是只关注本人的那一块,不只是写代码的机器。

其实面试官对你的我的项目是无所不知的,他的印象仅仅停留在你简历上形容的那些文字(而且有些面试官可能是被长期拉过来的,别问我为什么晓得????)。面试官通常的开场白就是让你自我介绍,其实这也是一个考查语言组织能力和口头表达能力的中央。

技术

咱们面的毕竟是技术岗,技术自身的重要性显而易见。

技术面试中,最重要的能够说是「技术体系」。也就是你不仅要有技术的深度和广度,更要能把它们串起来,其实有不少技术点是相通或类似的,如果面试中可能举一反三、触类旁通,是一个很好的加分项。比方:

  • Redis 的 AOF 和 MySQL 的 bin log
  • Spring 中的 BeanDefinition 和 JVM 中类的元信息
  • 布隆过滤器和 HashMap
  • 等等

技术的积攒尽管次要在平时,但刷刷面试题还是很有必要的,有不少其实就是所谓的“八股文”。这里次要列出自己面试过程中实在遇到的一些面试题,仅供参考。

Java

线程池

  • 外围参数有哪些?
  • 工作执行流程
  • 工作回绝策略

  • synchronized 锁降级过程
  • ReentrantLock

    • 实现原理(AQS)
    • 偏心锁如何实现?
    • volatile 个性

HashMap

  • HashMap & ConcurrentHashMap 实现原理
  • ConcurrentHashMap 如何实现线程平安

MySQL

  • 索引

    • 分类?应用场景?
    • InnoDB 索引的构造(B+ 树),为什么不必 B 树?
    • 如何查看索引的应用状况?Explain 关注哪些字段?
  • 事务

    • 隔离级别
    • RC/RR 的实现原理

Redis

  • 罕用数据结构

    • zset 实现原理
    • hash 扩容过程
  • 常见缓存问题

    • 缓存穿透、缓存击穿、缓存雪崩、热点 key
    • 如何解决上述问题?
  • 长久化:RDB、AOF,二者区别
  • Redis 为什么快?线程模型是怎么的?
  • 内存满了怎么办?淘汰策略有哪些?
  • 应用什么集群框架?

Spring

  • IoC、AOP 实现
  • 事务流传个性、生效场景
  • JDK & CGLib 区别
  • Spring Boot 启动原理

Dubbo

  • Dubbo 架构
  • 负载平衡算法、容错策略、灰度测试
  • SPI 机制
  • RPC 调用过程
  • RPC & HTTP

    • 二者区别与分割
    • 为什么 Spring Cloud 应用 HTTP 而非 RPC?

JVM

  • 运行时内存划分
  • 垃圾收集算法
  • 一个对象的内存调配过程?
  • CMS 收集器

    • 收集过程
    • 哪个过程会有 STW?
    • 如何解决内存碎片问题?
  • G1 收集器特点
  • GC Roots 有哪些?
  • JVM 罕用参数配置有哪些?
  • 内存占用过多,如何排查?

RocketMQ

  • 整体架构
  • 如何保障音讯的可靠性?
  • 如何实现程序音讯?
  • 消费者接口幂等设计
  • 事务音讯实现

分布式

  • 分布式锁

    • Redis 如何实现?命令?
    • ZooKeeper 如何实现?
    • 获取锁失败时如何解决?
  • 分布式事务

    • 2PC:毛病?
    • 3PC:解决了 2PC 什么问题?
    • TCC:毛病?
    • 最终一致性:MQ 实现流程
    • 实现框架(Seata)

其余

除了下面的「我的项目」和「技术」,可能还会问到一些其余问题,比方场景设计与剖析、算法,还可能有一些比拟凋谢的问题,上面介绍下我所遇到的。

场景设计 & 剖析

  • 秒杀场景设计

比拟典型的场景设计,电商类的公司很可能会问到,网上有很多案例和文章剖析,这里不再赘述。

  • 分布式锁设计

这个应该不是热门,自己也就遇到过一次,不过那一次被搞得有点懵,可能更多的是考查思路,大家能够多思考一下。

  • JVM 问题排查:线上 JVM 内存、CPU 飙升,如何去排查?

次要波及一些罕用的 Linux 命令和 JDK 自带工具,比方 top、jstack、jmap 等,以及阿里的开源工具 Arthas 等。

尽管在理论状况中咱们可能很少有机会接触(小小开发通常没权限,还是要运维大佬反对),但这些工具还是要理解的,能够在本地跑个 Demo 去验证,免得到时候答不上来。

  • 容灾解决

如果线上所有机器(包含服务器、数据库、缓存服务器)全副宕机,如何解决?

PS: 这些场景设计和剖析的问题,通常比拟综合,个别是考查对一个场景的整体设计,或者剖析和解决问题的思路。

算法

  • 爬楼梯
  • 二叉树遍历

PS: 算法问题遇到的不是很多,有些考查算法可能就是单纯的面试流程。当然,字节这类的公司除外,想去的话必定还是要刷很多算法的。

相比之下,大部分公司更重视「我的项目深度」和「技术体系」,或者给出一些理论的场景,考查剖析和解决问题的教训和思路。

凋谢问题

这些问题比拟凋谢,没有固定的答案,可能就是面试官想看下你的临场发挥吧。遇到的几个问题如下:

  • 有没有带过人?经验是怎么的?
  • 如果你作为 PM,如何从整体协调一个我的项目?
  • 如果你在团队推广 DDD,你会怎么做?
  • 你有什么毛病?长处?
  • 将来三年的职业规划?
  • 在公司次要有哪些成长?
  • 下级、共事对你的评估?
  • 最近在看什么书?

末了

面试流程

我所接触的面试大部分是「三轮技术面 + HR 面」的模式,也有一些是两轮技术面,不同公司可能不太一样。一面个别是电话面初筛,前面二三轮技术面和 HR 面通常在一起。这样其实也挺好,跑一趟就行了。

心态

面试的心态也很重要。其实你跟面试官之间是平等的,面试的过程是让他对你更加理解,而不是他对你的考核。

我刚开始面的时候,因为好久没面试,再加上原本就不太爱谈话,刚开始缓和的不行,起初面了几次之后才逐步有点感觉。如果较长时间没面试,能够先面一两家练练手、找找感觉。

当然,整个面试工夫也不倡议拖得太久,否则整个过程会比拟累,最好还是一鼓作气。

啰里啰嗦一堆,其实面试还是挺看运气的,如果跟面试官聊得比拟投机,对你的评分天然也不错。

最初,预祝想跳槽的亲们一路绿灯!

正文完
 0