2023年2月中到三月底,战线十分漫长,但是仍然没有斩获offer,记录一些面试过程中的经验与问题梳理,方便复习。
目前还在继续准备。
阿里云多个部门提前批一面挂,包括云中间件,云存储,云网络,GTS,阿里CTO二面泡池子,腾讯PCG二面挂,美团到店二面挂,携程笔试挂,拼多多笔试挂,米哈游笔试挂,深信服简历挂,蔚来简历挂
投递肯定看背景,看方向匹配程度,以及手撕代码的发挥和面试的实际表现。
但是面试下来的体验真的很绝,没有实习经历,可能很难找到一份实习,这就死锁住了。我是为了接触一些更实际的场景,去见识中间件怎样在高压场景下发挥作用的,不是我还没去公司就能在自己的demo下做各种实际猜想。
有没有对消息队列进行过压力测试,有没有大量用户并发的场景以及解决方案,有没有防黑客攻击,有没有数据库防SQL注入,有没有用过微服务解决什么问题。
不过纯粹抱着学习的态度,借助docker部署消息队列集群或者一些数据库节点仍然是可行的,只要摸你的场景demo足够有效,当然是一份实践。
校招与社招还是会分不同的侧重点。
对于项目来说,先说明项目的背景,主要技术栈,解决了什么问题。
比如前后端项目,会问你的角色,你负责的内容,你觉得项目的难点是什么?这张表是怎么设计的?为什么这么设计?
其他专业类的项目可能就是要讲清楚算法,一些工具类有没有用多线程,持久化方式是怎么样的需要说清楚。多线程的集体实现,信号量还是其他的同步互斥方式?
深挖项目这部分灵活性非常大,考验自己,也要看面试官的兴趣点以及业务能力,如果这个人很资深,那么问题可能会一个接一个。有订阅功能吗?有哪些控制器?哪些服务?
比如你们能实现什么搜索功能?用过ES没?看过ES源码,了解其实现原理吗?
Java和Cpp有什么区别?
你当前主要用的jdk版本是什么?有什么特性?
最新版的Java特性知道吗?
HashMap底层源码看过吗?说说其实现方式
说说HashMap的几个核心参数
HashMap为什么线程不安全,多线程操作时,get和put的影响,老版本头插法会带来循环链表
ConcurrentHashMap为什么是线程安全的?jdk1.7前后发生了什么变化?
Integer和int,得说它内涵的缓存机制,装箱和拆箱这种机制带来的好处,什么时候要用包装类?
String a = new String("abc"); 创建了几个对象?
你都用过什么List,各自的特点是什么?底层实现是什么,哪些是线程安全的?
线程有哪些状态? 操作系统的线程和Java的线程都说一说
Java线程多次start()会怎么样?
线程池有哪些状态?分别具体说一说
线程池核心参数有哪些?具体的含义和作用讲一下,什么时候会创建新线程,最大线程数和阻塞队列都满了会怎么样?
线程池拒绝策略是怎么样的?四种策略,分别回答一下,如果可以则可以继续延伸到其他中间件中常见的拒绝策略。
说到阻塞队列,都有哪些实现?Array的和linkedlist的,前者是有界的后者是无界队列,会有OOM的风险。
ThreadLocal知道吗?其作用是什么?为什么ThreadLocal中是弱引用,会有什么问题?(OOM)
线程池中使用ThreadLocal会有什么问题需要注意吗?
Java四种引用分别是什么,有什么区别。
知道JMM是什么吗?一种规范,JVM实现了这种规范,避免了多线程场景下的许多问题。
并发编程三大特点是什么,原子性,有序性,可见性。
synchronized和锁用过吗?分别讲一下区别。高频常见,前者是JVM实践可以锁升级,后者是API,需要人工加锁放锁,但是结合condition可以根据需要的条件释放锁。
锁的底层是什么?知道AQS吗?讲讲?双向链表state来记录状态,并标记哪个线程持有该锁。分共享锁和独占锁的情况。
sleep和wait的区别是什么?前者是Thread的方法,后者是Object的方法,需要在同步代码块中使用
你知道垃圾回收吗?你常用的垃圾回收器是什么?知道你用的版本的默认垃圾回收期是什么吗?
Jvm的内存结构式什么?对内存的具体分区是怎么样的?s区有几个?为什么有s区的存在?
Java的编译过程是怎么样的?
什么是双亲委派模型?
volatile知道吗?作用是什么?怎么添加的内存屏障,如何防止的指令重排序。
知道有什么引擎吗?不同引擎对比一下,除了MyISAM和InnoDB还知道什么?
什么场景适合MyISAM?插入,读取。
SQL注入如何避免?
知道索引吗?索引的原理是什么?
聚簇索引非聚簇索引,索引覆盖是什么?
怎么设计索引,如果让你的项目上线,应该怎么加索引?
做过慢查询吗?怎么弄?explain
怎么优化索引?最左匹配,设立联合索引,减少回表,找区分度大的字段当索引
为什么用B+树索引?
什么情况下索引会失效?
有MVCC为什么要gaplock? 要区分是当前读还是快照读。
事务隔离级别有什么?分别有什么问题?Mysql怎么解决的这些问题。
知道Mybatis的底层实现原理吗?
知道Mybatis中是如何对应MySQL中的不等号吗?
底层数据结构有什么?
SDS底层是怎么实现的?
hash底层是怎么实现的?
压缩链表讲一下
应用到哪?热门文章,点赞记录。
集群数据一致性怎么保证?
讲讲Redis持久化方案, 进行优缺点对比,rdb和aof。
spring事务是怎么进行管理的?
springboot事务是怎么进行管理的
阅读过源码吗?讲一些你印象深刻的具体的函数或者属性值,或者注解
你知道Java是怎么识别这些注解的吗?如果让你写一个程序去解析每个注解的功能你会怎么写?
Spring循环依赖如何解决
持久化,确认消费,按照特定顺序消费
JVM内存管理和虚拟内存是如何交互的?系统调用等
虚拟内存知道吗,分页分段,会不会有碎片,页表,物理内存到虚拟内存的映射是怎么样的?
浏览器输入一个地址后的整个流程,会涉及什么协议?
Java线程是内核态还是用户态?
知道OSPF协议和BGP协议吗?
手写生产者消费者模型
反转链表
整数拆分
后序遍历二叉树非递归
合并区间
用Java实现strcmp函数,不调库来判别字典序
输入字符串,输出各单词及其出现的数目,按单词字典序输出
岛屿数量
接雨水
...