这是一位读者参加武汉招银云创社招的面试记录,全程被吊打,共 47min,结果也如预想那样没有通过。
读者情况:社招,三年经验。
下面是正文。
社招,面试了武汉的招银云创 ,一共 47min 的技术拷打,堪称八股盛宴,难度有点大,感觉全程被吊打。
不是?现在强度这么大的嘛?
下面分享一下面试被拷打的一些技术问题。
- 如何保证你的流程引擎和业务代码解耦?用到了哪些架构设计?或者说设计模式?抽象哪些业务功能出来
- 流程审批完之后一般调方法 A,现在想调用方法 B 或者其他的 n 个方法,怎么设计这种需求?(设计模式或者动态注入方面去说)答了策略模式,面试官说不够解耦(后面又说责任链模式)。ps:这里其实考察的是观察者模式,当时没有想到。
- 聊一聊 SpringCloud 的 Eureka,Eureka 服务探活。sorry,不知道呀
- 说下代理模式,什么场景下使用代理模式,业务层面怎么使用的?(不让说 Spring 框架下使用的 AOP、声明式事务的代理模式)
- 索引的原理,可以根据版本来说下,不同的版本区别还是挺大的。(头一次听说,不知道是不是问自适应哈希索引,但这个我只是了解过,背的不熟,也不敢说)
- 索引的类型,索引怎么进行检索的
- 联合索引失效的场景?a,b,c 联合索引 b=null, a=xx and b=xx or c=xx 会生效吗?
- 说一说 clone 方法,clone 原理是啥,为什么是浅拷贝?( 只知道是浅拷贝,原理不清楚)
- 为什么 Redis 是单线程支持高并发
- 千万级别的数据表,查询效率很慢,有什么优化方法?
- 分库分表你怎么设计?你应该是没有做过分库分表是吧?(回答的非常八股,被看出来了)
- 数据库的 explain 说下,explain 有哪些字段,分别什么含义,重点关注哪些字段?(面试官补充说 rows 也很重要,后面百度也是说很重要,rows 显示 MYSQL 执行查询的行数,数值越大越不好,不理解那我数据量多,rows 不就越大吗)
- 说下 ConcurrentHashMap,那你有遇到 ConcurrentHashMap 线程不安全的场景吗?或者哪个 api 线程不安全?(原来 ConcurrentHashMap 的线程安全指的是,它的每个方法单独调用(即原子操作)都是线程安全的,但是代码总体的互斥性并不受控制)晕了,那 ConcurrentHashMap 线程安全有啥用?
- 线程的几种状态
- 什么 api 让线程从就绪变成运行状态?(答成 start 了,start 是初始变成就绪,面试官说是 run 方法,感觉说错了,线程状态变化的图上写的是系统调度执行 RUN,不是 run 方法)
- 什么 api 让线程从运行变成阻塞状态?
- 唤醒线程呢?notify 和 notifyAll 的区别?
- sleep 和 wait 的区别?start 和 run 的区别?
- 双向链表有哪些类?(说了 linkedHashMap,面试官说是单向的,怀疑他是不是听错了,AQS 也有使用,但是不知道当时是不是面晕了没有说)
- 那你有哪些精通的技术栈?Spring 没啥好聊的,他就是一个框架。(我精通个锤子 🔨,只能说 Spring,SpringBoot 熟悉)
- SpringBoot 相对于 Spring 有哪些区别?
- Spring 的事务
- 事务失效的场景
- orm 框架,说下 Mybatis 的缓存。(不懂)
- spring-core 的核心组件 (没看过)
- MVCC 说下
上述绝大部分面试问题的参考答案都可以在下面这两份资料中找到(这段为 Guide 补充):
- JavaGuide :Java 学习 + 面试指南。笔者维护了六年,累计收获了 144k star,持续更新完善,内容全面,文章质量非常高。
- 《Java 面试指北》:我星球里的一个专栏,和 JavaGuide 的内容互补。
反问: 面试官对我的评价。
面试官反馈项目是内部的项目,在大数据量和分布式的场景有所欠缺,没有使用过分库分表、MySQL 集群、Redis 集群,这些都是很常见的操作了,技术功力不深厚。
ps: 分库分表和集群这些事常见操作?绝大部分人都接触不到这些场景好吧?
因为面试问了八股之外的东西或者觉得是很少问到的八股,没见过,没有复习,所以问的时候有很多不会的。另外有些细枝末节的地方也是背了忘,还应该加强记忆。
果然,第二天一大早收到了感谢信。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。