Kotlin可能带来的一个深坑,实战篇

简介: Kotlin可能带来的一个深坑,实战篇

基本情况

先说一下个人基本情况,计算机科学与技术专业。主要学的Android开发,所以投的岗位都是Android开发工程师。投了知乎,内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试,知乎Skype面试,蘑菇街阿里电话面试,网易现场面。知乎二面被拒,蘑菇街阿里一面被拒,网易三面,然后备胎了,前几天被通知过了,收到了offer。自己整理了一下被问到的问题,现在分享给大家,另外自己整理的一下资料也会发给大家,希望能帮助到各位求职的小伙伴。

背景

面是是上海的Android leader岗位,周日一轮面试,自我感觉答的都还不错。

结果收到邮件面试结束了,说什么"你优秀的学识和能力给我们留下了深刻的印象!经过对你综合情况的仔细评估,并经过与岗位需求进行谨慎匹配和权衡之后, 非常遗憾,我们这次没有和你达成合作。但你的信息已经被录入到公司人才库"。意思就是挂了呗。

后来打电话问hr,没跟我说原因。然后面试过程中,有一点奇怪的地方,面试前面试官跟我说我面的而这个岗位有点奇怪,他也没跟我说哪奇怪。

面试过程

下面是面试官提的一些问题:

面试官:点击一个图标到这个应用启动的全过程(前面是项目经验没啥好说的)。

回答:

点击图标后通过startActivity远程调用到ams中,ams中将新启动的activity以activityrecord的结构压入activity栈中,并通过远程binder回调到原进程,使得原进程进入pause状态,原进程pause后通知ams我pause了。ams再根据栈中activity的启动intent中的flag是否含有new_task的标签判断是否需要启动新进程,启动新进程通过startProcessXXX的函数。启动新进程后通过反射调用ActivityThread的main函数,main函数中调用looper.prepar和lopper.loop启动消息队列循环机制。

最后远程告知ams我启动了。ams回调handleLauncherAcitivyt加载activity。在handlerLauncherActivity中会通过反射调用Application的onCreate和activity的onCreate以及通过handleResumeActivity中反射调用activity的onresume。一个应用就此启动。

面试官:Retrofit原理。

回答:

主要是通过动态代理将接口直接转换成代理对象。动态代理和静态代理的区别,动态代理直接在虚拟机层面构建字节码对象。

面试官:View自定义的流程,实现哪些方法。

回答:

实现OnMeasure,onlayout,onDraw。

继续问“onMeasure中会用哪些方法?”(我觉得这题可能没大好,我是想回答的详细点的,结果还没打到点他就说好,继续下一题,不知道是认可了还是觉得我答的过于啰嗦,如果觉得太啰嗦可以提出来啊。。。)

我回答onMeasure 中传入两个int数值,这个数值32位,前2位表示模式,后30位表示宽度、高度。这是外表容器给内部view的限制。

一种模式是容器给你多大的值,你就是多大的值(match_parent),

第二种,容易给内部view多大的空间,内部view不用管,是多大就是多大。

第三种,容器给子view多大的空间,和子view自己算出来的占用空间,选择小的那个(wrap_content)。说到这我正打算说onMeasure会调用measureChildwithmargin类的函数,他说好了,然后下一题。

面试官:怎么设计app的。

回答:

基本都用的mvc架构,曾经有个项目使用mvp。还有其它一些整体设计上的问题,很零碎,但都答的差不多。

面试官:(最后是算法题,面试官的表述不是很清晰,所以开始没理解他的意思,我归纳一下题目)

有1,3,7三个面值的金钱,现在要取n元。怎么取个数最少。(n是已知数) 意思就是 1 * a+3 * b+7 * c=n 什么情况(a+b+c)最小。

当然这是我自己归纳出来的,他开始的描述让我想哭。

回答:

开始脑子有点没反应过来,把它当逻辑题做了,想了5分钟后才反应过来,这是编程题啊。遍历呀, a的取值范围(0n)b的取值范围(0n/3) c的取值范围(0~n/7) 遍历取最小值。当然这种情况效率并不高,我当时也和面试官说了,没太考虑效率,如果需要可以再改。感觉他也认可,思路对就行了。 其它一些零碎的问题没印象了,主要就这些。

我想大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,比如我这次的挂了的面试,大家可以对比下,发现一些自己回答的话会有哪些问题,这样对自己之后的面试才更有帮助。

相关文章
|
1月前
|
前端开发 Java 程序员
Kotlin零基础入门到进阶实战
Kotlin现在是Google官方认定Android一级开发语言,与Java100%互通,并具备诸多Java尚不支持的新特性,每个Android程序员必备的Kotlin课程,每个Java程序员都需要了解的Kotlin,掌握kotlin可以开发Web前端、Web后端、Android移动端、Server脚本、桌面游戏等,采用真实案例讲解,拒绝纸上谈兵。
25 0
|
3月前
|
XML 编译器 Android开发
Kotlin DSL 实战:像 Compose 一样写代码
Kotlin DSL 实战:像 Compose 一样写代码
59 0
|
Java 编译器 测试技术
枯燥的Kotlin协程三部曲(中)——应用实战篇(中)
上节《枯燥的Kotlin协程三部曲(上)——概念启蒙篇》,追根溯源,先了解并发相关的概念,尔后引出Kotlin协程
231 0
|
4月前
|
Android开发 Kotlin
Android实战演练(kotlin版),词汇记录APP
Android实战演练(kotlin版),词汇记录APP
38 0
|
Android开发 Kotlin
Kotlin安卓实战之Adapter
Kotlin安卓实战之Adapter
211 0
Kotlin安卓实战之Adapter
|
缓存 Android开发 Kotlin
Kotlin安卓实战之SharedPreferences
Kotlin安卓实战之SharedPreferences
200 0
Kotlin安卓实战之SharedPreferences
|
安全 Android开发 Kotlin
Kotlin学历之Android MVP架构实战
Kotlin学历之Android MVP架构实战
127 0
Kotlin学历之Android MVP架构实战
|
XML 数据可视化 Java
Kotlin 实战 | 用语法糖干掉形状 xml 文件
项目中的各种描述形状的 xml 文件多如牛毛。虽然 xml 提供了可视化效果,但不能复用,读取耗时也是它的缺点。用 Kotlin 语法糖包装一下就可以和 xml 说再见。
170 0
|
XML 存储 算法
Kotlin 实战 | 时隔一年,用 Kotlin 重构一个自定义控件
一年前,用 Java 写了一个高可扩展选择按钮库。只用单个控件实现单选、多选、菜单选,且选择模式可动态扩展。 一年后,试着用 Kotlin 重写该控件。
747 0
|
Java API 调度
枯燥的Kotlin协程三部曲(中)——应用实战篇(下)
上节《枯燥的Kotlin协程三部曲(上)——概念启蒙篇》,追根溯源,先了解并发相关的概念,尔后引出Kotlin协程
276 0