深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
我的简历没有任何包装,项目经历都是自己做的很简单的东西,技能描述除了java 和 Android 全部写的是 “了解” 字样,不会的都没写、没了解过的也没写、更没有包装工作经验。但这样竟然也通过了简历评估,约了面试。
面试流程
概况
面试流程和网上别人描述的基本一致,问的问题超级多、覆盖知识范围也极广,整个面试下来将近一个小时。
不过问的大部分问题我都不会,或者答得不好,还是准备不够充分吧。
不幸的插曲
约的面试时间是下午 2 点,我提前十分钟进入视频面试系统,但是当自我介绍的时候,我的电脑突然就黑屏了,这次给我弄尴尬了,也很影响心情。我赶快重启电脑,并和面试官说明情况。
自我介绍
介绍了自己的基本情况,比较后悔的一点是没有说自己的项目经验,这直接导致后面面试官没有问我关于项目的任何东西!大家切记,如果有自己项目的话,一定要介绍,要引导面试官去问自己会的东西。
面试题目
- 自我介绍
- 讲讲你对 MVVM 的认识?
- MVVM 的优点有什么呢?
- MVP 中 Model、View 和 Presenter 的持有关系是怎么样的?
- MVVM 中的持有关系呢?
- MVVM 中各个层在 Android 开发中的对应关系?
- 你的 MVVM 用到了 Jetpack 里的 ViewModel,那么它是如何保持数据的呢?
- ViewModel 是怎么做到在 Activity 销毁重建新实例之后还能保持不变的呢?
- 如果用 Kotlin 去调用一个具有返回值的 Java 函数,那么这个返回值是可空的还是非空的呢?
- Kotlin 中的可见性和 Java 是不一样的,分别讲讲?
- 你说你用到了协程,讲讲你对于协程的认识?
- 调用了 cancel() 之后协程的状态变化?
- 如果子协程中没有通过判断协程状态来决定是否终止工作,那么取消父协程之后会是怎样的?
- 你提到了协程分为有栈和无栈两种。它们的区别是?
- 这个“栈”里都保存了什么信息?
- Kotlin 的协程是无栈的,那这些信息是怎么保存的?
- 协程该怎么取消呢?
- 协程会不会和线程一样有共享变量冲突的问题呢?
- Kotlin 中有一个 inline 关键字,讲讲你的了解?
- 除了通过内联函数减少函数调用的开销,还有什么用途吗?
- 如果现在有一个高阶函数被 inline 修饰,我不想让它的参数被内联,该怎么办呢?
- Kotlin 是可以跨平台编译的,讲讲你的了解?
- 你刚才提到的编译到“原生平台”,指的是什么?
- 现在如果让你用 Kotlin 写一个跨平台的项目,你该怎么做?
- 浏览器里从输入一个网址,到最终看见网页,发生了什么?
- HTTP 是应用层协议,讲讲是如何建立的?
- 你说底层是 TCP,那讲讲 TCP 的三次握手?
- 如果现在要使用 HTTPS,连接的建立会发生什么变化呢?
- 客户端是如何根据 IP 地址找到服务器对应的主机的呢?
- LeetCode 518. 零钱兑换 II
结尾
面试官问我有什么问题想问的,我早就被他的问题问傻了。不过还是好奇为什么没问我项目经历,我就问了,结果面试官说忘了。。。
复盘建议
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**