大家好,我是程序员阿药。今天与你们分享的是一篇24届小米秋招面经,话不多说。
发车!
1. 自我介绍
推荐:关于面试,我想说。。。
2. 介绍一个参加的比赛?
答:比赛做了个什么项目,取得了什么成果,在准备过程中如何带领团队,用了哪些技术栈,开发过程中遇到的问题,收获是什么。
3. 两段实习经历成长最大的地方,技术上或个人能力上,所做项目中遇到的比较大或比较棘手的问题?
答:选取了两段实习经历中各一个自己解决过的棘手问题,介绍了遇到的是什么问题,是怎么发现这个问题的,然后如何进行了排查,如何解决的问题(查阅资料、请教前辈等),解决后进行了怎样的测试,是否达到预期效果且未带来其他影响,收获了什么。
4. 学过那些计算机相关的课程,选两门擅长的内容介绍一下?
答:介绍了数据结构中的红黑树和计算机网络原理中的三次握手四次挥手。
5. 熟悉Linux吗,介绍5个常用的命令?
答:
-
top命令:常用的性能分析工具,监控Linux系统状况,实时显示系统中各进程的资源占用情况。
-
df命令:以磁盘分区为单位查看文件系统,可以获取磁盘被占用了多少空间,目前还剩下多少空间等信息。
-
pidof命令:查找正在运行的进程的进程号(pid)。
-
free命令:显示内存使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
-
rsync命令:将一台主机中的数据(差异数据)拷贝到另一台主机。
6. Git常用吗,介绍5个常用的命令?
答:
-
git clone 远程仓库路径:将远程仓库的代码克隆到本地仓库。
-
git push 远程仓库别名 分支名:推送本地仓库代码到远程仓库。
-
git pull 远程仓库别名 分支名:拉取远程仓库代码到本地并合并。
-
git branch 新分支名:创建新的分支。
-
git checkout 分支名:切换分支。
7. 除了Java外是否会C、C++、Python等别的语言?
8. Java的重载和重写区别?
答:
-
重写发生在子类与父类之间,重写方法的名字和参数列表都不能改变,方法的访问修饰符要大于等于被重写方法的访问修饰符,返回值类型和抛出异常类型要小于等于被重写方法的返回值类型和抛出异常类型。
-
重载发生在同一个类中,重载方法要保证方法名不能改变,参数列表一定要改变。
9. 进程和线程的区别?
答:
-
线程是进程划分成的更小的运行单位,一个进程中可以有多个线程。
-
进程基本上是相互独立的,而线程则不一定,因为同一进程中的线程因为共享相同的虚拟地址空间等原因会相互影响。
-
进程开销大但资源管理容易,线程开销小但不利于资源的管理和保护。
10. Java中的线程池有哪些,线程池的执行流程?
11. 编程中常用的设计模式,详细介绍3个?
答:单例模式、工厂模式、观察者模式。重点介绍该设计模式的作用、原则、哪些地方使用过,如Spring中的Bean工厂用到了工厂模式,为什么要用、带来的好处。
12. 介绍一下JVM?
答:介绍了JVM的内存结构、垃圾回收、类加载器(重点介绍了双亲委派模型)。
说点题外话,小米面试官真的非常好,面试体验一级棒!
可以关注一下我的微信公众号哦,更多文章正在来的路上。。。。。。