前几天得知以前总是跟在我屁股后面的小表妹一次性拿下小米Java技术岗offfer,导致我越发觉得自己真心有点菜鸡,我弱小的心灵受到了一万点暴击!
首先介绍一下表妹的情况: 某理工类院校本科,之前一段实习经历是在一家有外企背景的供应链科技公司工作。由于本身是理工科,之前在校园内就有软件开发团队的工作经验,三年下来,也是学有所成
来自表妹的自述:
是在boss上投的简历,之前也投过一次,简历都没通过删选,后来让同学帮忙改了一下简历,重新投另一个部门,获得了面试机会。
6月29日,中午接到了主管的短信面试邀约,短信内容大概是主管主动介绍了一下自己所在的部门,同时想沟通一下方便的面试方式和面试时间。
虽然很羡慕,不过这又为我码字提供了素材(哈哈哈哈哈),今天就大致分享一下表妹Java的面试经验,看看人家面试都问了些啥**(并在文末附带Java面试+学习资源,可免费分享,点击这里获取 即可)**。
##现在正式进入正题
###笔试
-
首先是30道java和安卓的选择题,当时表妹是安卓部分基本上的都不会
-
算法是两道之前在某软件上刷到过的原题,直接秒了,一道是编辑距离,另外一道忘记了.
###小米java一面 ( 20分钟)
- 1.简单介绍下自己
给他讲了自己大学的学习情况 , 学习了哪些技术 , 做了哪些项目
- 2.说说你了解的设计模式
简单说了下工厂模式,单例模式,观察者模式,策略模式,因为我知道这个面的是安卓岗位,所以重点给他讲了模板方法模式 ,我自己了解到的是安卓有生命周期流程,生命周期流程应该是用了模板方法,又提了一下前端react和vue应该也使用了模板方法模式,他们都有生命周期方法,这些都是钩子函数
- 3.linux了解么
平时项目部署会用到
- 4.线程和进程的区别 , 进程的通信方式了
进线程区别老八股了 , 进程的通信方式:管道,套接字,共享内存,消息系统,信号量
- 5.用过管道么
用过linux的 “|”
- 7.jvm类加载过程
讲了加载-连接-初始化的具体过程,也说了下类加载器的双亲委派
- 8.linkedlist和arrarylist的区别
同样老八股.重点跟他说了arraylist,说了下自己看的扩容源码,防止扩容溢出的方式.
- 9.了解kt么
知道这个东西,但是没有具体学习过.
- 10.有什么想问的吗?
mix4是屏下摄像头吗?
###7.10 二面 15分钟
本来是约好三点面的 , 但是他1点提前打电话来,说面试要改时间,由于我还在公司办公室,就改成了用电话面
- 1.讲一下Udp和tcp
老八股
- 2.tcp的可靠性是怎么保证的
校验和,重传机制,流量控制和拥塞控制
- 3.讲讲拥塞控制和流量控制的区别
我个人的理解,拥塞控制是针对整个网络环境,流量控制是双方的接收发送能力
- 4.具体讲讲tcp拥塞控制
老八股,慢启动巴拉巴拉巴拉,提了一句还有很多种拥塞控制方案,比如bbr , 再讲了下了解过一点kcp协议,以及浅显地说了下kcp为什么可以做到可靠以及低延时
- 说一下https
非对称加密交换密钥,再用密钥去进行对称加密传输,中间涉及到证书的验证吧啦吧啦吧啦
- 5.线程池,你怎么创建线程池
八大参数说了一遍,具体讲了自己对最大线程数和阻塞队列这两个参数的理解,如果设置的是无界队列,那么最大线程数这个参数就没什么意义了 . 又说了下线程池的具体工作流程vol
- 6.如果线程池和队列都满了,继续添加任务呢
会触发拒绝策略,拒绝策略其实就是一个接口,这个接口有个方法,会传进来两个参数,一个是线程池本身另一个是继续添加的任务,你想怎么处理这个任务都行,比如直接抛弃报异常,或者是让当前线程去执行这个任务…最后跟他说了下,我实现过简易的线程池,对这方面有一点了解.
- 7.说说乐观锁和悲观锁
老八股
- 8.java里常用的锁
syn和lock,cas自旋锁
- 9.volatile
老八股,再提了下刚刚说到的cas自旋锁
- 10.树的遍历方法,二叉树搜索树查找效率
dfs,bfs,logn
- 11.排序方法
八大排序
- 12.如果大数据量排序选哪种
堆排,快排,归并这些可能会好点,具体看业务
讲了下自己的理解,有些业务可能选插入冒泡这种稳点的排序会更好,比如需要多次排序
- 13.哪些是稳定排序呢?
冒泡,插入,比较慢的都是吧,具体看排序过程种有没有打乱先前排好的位置(说错轻喷)
- 14.有什么想问的吗?
mix4到底是不是屏下摄像头?
如何备战Java面试?
谈到怎么准备Java面试,我想说,若你还同无头苍蝇一般不知如何下手,那么第一件事你要做的就是梳理自身的知识脉络。毕竟,想要进大厂,就需要具备更多的知识树,需要掌握更全面的知识体系,所以就需要对知识进行一个系统的梳理了。
如果觉得自己手绘Java知识脉络图比较麻烦,可以借鉴参考下方我之前大致手绘一份知识网图(Java知识体系庞大,我是用的xmind绘制的脉络图,文中无法直接上传原件,截图如下,内容过多以至于图片不够清晰,但可提供分享原件,点击这里获取 即可 )。
此外,关于面试刷题,个人觉得这份** “Java高分面试指南”很不错,包含25个专题内容,**整个1000+题50w+字解析,够你刷到秃顶:
- JavaOOP
- Java集合/泛型
- Java中的IO与NIO
- Java反射
- Java序列化
- Java注解
- 多线程&并发
- JVM
- Mysql
- Redis
- Memcached
- MongoDB
- Spring
- Spring Boot
- Spring Cloud
- RabbitMQ
- Dubbo
- MyBatis
- ZooKeeper
- 数据结构
- 算法
- Elasticsearch
- Kafka
- 微服务
- Linux
最后,还有2021最新整理的**“Java中高级核心知识点解析”,**查漏补缺知识点刷它最合适不过,包含整个30类知识点的集合:
- JVM
- JAVA集合
- JAVA多线程并发
- JAVA基础
- Spring原理
- 微服务
- Netty与RPC
- 网络
- 日志
- Zookeeper
- Kafka
- RabbitMQ
- Hbase
- MongoDB
- Cassandra
- 设计模式
- 负载均衡
- 数据库
- 一致性哈希
- JAVA算法
- 数据结构
- 加密算法
- 分布式缓存
- Hadoop
- Spark
- Storm
- YARN
- 机器学习
- 云计算
从学习路线→☛面试刷题→☛核心知识补漏,以上全套的Java学习资源皆可免费共享给有需求的你,还请仔细关注一下免费下载原件的方式:点击此处查看