首页 > 编程语言 >阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节

时间:2023-06-19 11:02:41浏览次数:39  
标签:面试官 如何 堪比 面试 线程 太太 Activity Android


阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_android

本人研究生在读,在2月26日找了师兄内推阿里钉钉团队,28号接到了约1面的电话。幸好我提前准备了一个多月的样子,刷面试题、刷LeetCode(面了之后才觉得自己刷少了),对于我这样一个实习生来说题目还是有些偏难,不过在4月20号终于拿到意向书了,听内推人说阿里实习面试没有rank,可能单纯就是流程比较慢,漫长的等待和面试还是值得的呀。

钉钉1面,3月1日(电话面试,1个小时)

  1. 本科、研究生学过什么跟计算机相关的课?
  2. tcp、http协议相关;http1.1和2.0区别
  3. 堆排序的过程
  4. Java单例有几种方式
  5. 静态方法同步和普通方法同步的区别
  6. 线程池7大参数、工作原理
  7. 点击手机桌面应用图标后发生了什么
  8. View三大流程说了一下,流式布局FlowLayout怎么实现的
  9. retrofit原理,看过okhttp源码,讲了一下okhttp的工作原理(分发器、拦截器,讲了细节)
  10. 聊了项目(讲了好久),几个方面如下:

(1)项目中用了kotlin协程,于是问了协程的相关理念,面试官可能觉得说的不太全,就给补充了一下。 然后说协程这样的新技术国外有人用,国内用的很少(因为使用协程会改变老项目原有网络架构,对于新项目可以使用,想要取代老项目比较困难)。

(2)如果用户反应app有问题,该怎么解决?回答网络抓包,面试官说大型项目不可能通过抓包来找问题,后来经过暗示,正确做法应该是生成日志文件并提交到服务器。

(3)聊了项目中登录相关的业务怎么实现的(将服务器响应的token持久化并添加到请求头)。

  1. 提问环节。问了面试官kotlin在企业应用中是否有用到,面试官说由于Java和kotlin并不冲突,因此在项目中是共存的。

第二天下午接到了约2面的电话,就约在当天晚上

钉钉2面,3月2日(电话面试,1个小时)

  1. 聊了研究生、本科阶段得过哪些奖,做过哪些项目或者参加过哪些比赛。具体问了本科参加过的一个水中机器人的比赛(stm32单片机做的),怎么识别水中的路线之类的一些细节;又问了简历中的一个医疗机器人的项目(遇到了哪些问题、只是实验室做着玩还是准备用在现实生活中);又问了参加过的数学竞赛,这个竞赛考察了什么能力等等。
  2. 问设计模式,Android源码或者第三方开源框架应用设计模式举例?(说了okhttp拦截器责任链模式)
    自己的项目有没有用设计模式?(retrofit单例,用的kotlin的object关键字实现)
  3. Android源码中你认为有哪些方面设计的很优秀的地方?(说了Android view体系)
  4. 聊kotlin,kotlin相比于Java有哪些优势、具体有哪些特性、语法糖之类的
  5. 谈谈对mvvm、mvc架构的理解,为什么你要在项目中使用mvvm?(当然是Google推荐使用mvvm)
  6. 聊对工作、学习方面的态度,应该具备什么能力等等
  7. 三道算法题(说思路):
    (1)二叉树的最近公共祖先(只想出来一种比较笨的方法)
    (2)遍历二叉树的第k层节点(递归迭代都讲了)
    (3)给一个中文字符串“一万两千八百一十一”(只是个例子),输出这个字符串对应的数值(没想出来)
  8. 提问环节,问了部门的氛围如何之类的

二面之后参加了阿里的第一次笔试,两道力扣hard题,血难,加上我之前没练过ACM输入输出,最后一道也没过0分

(1)力扣1411:网格图涂色的方案数

(2)力扣815:公交路线

笔试之后心态崩了,觉得0分应该进不了阿里了,没想到过了两周二面的面试官给打了个电话,说前两面的面试成绩挺好,可以再给一个机会,用阿里伯乐平台出了4道题(其实是前两道有点难,第一道贪心算法,第二道工厂模式+策略模式+多线程都不会),才又出了后面两道简单的算法题,一个反转字符串中的单词,一个求链表倒数第k个节点,这俩写出来了。一周之后接到了3面的电话。

钉钉3面,3月24日(电话面试,40分钟)

  1. 自我介绍
  2. 聊项目,mvc、mvp和mvvm架构各自的特点;在项目中最具有挑战的是什么?项目收获到了什么?
  3. 算法题:给两个字符数组,举例:{h,e,l,l,o, ,w,o,r,l,d}和{e,o},如果第一个数组中存在第二个数组中的元素则去掉,后面的元素往前顺移,结果为:{h,l,l, ,w, r,l,d}。要求时间复杂度为O(n),空间复杂度为O(1)。
  4. 你认为什么样的人可以称之为技术大佬?如果只有30分钟,你会依据什么来判断一个人是不是大佬?你认为自己身边最厉害的技术大佬是谁?他为什么会成为大佬?你愿不愿意推荐他到我们顶顶团队(我说他投了蚂蚁,面试官说他做了错误的选择…)?如果让你在半年之内达到他的水平,你的学习规划是什么?你会不会向他请教学习方法?
  5. 反问:

(1)大厂对新技术的态度是怎样的?
(2)鸿蒙会不会取代Android?Android的前景怎样?面试官先问了我的观点,后来说了自己的观点:不会。
为什么不会?这个要自己查找最近几年出现的智能手机系统,它们为什么没有Android和iOS成功,从中找答案。

钉钉HR面,3月30日(钉钉视频面试,20分钟)

  1. 自我介绍,开了共享屏幕现场给HR展示了之前的一个项目
  2. 你的项目UI界面是自己设计的吗?
  3. 你对未来的规划是什么?
  4. 有没有投别的大厂?
  5. 大厂有很多,为什么要投阿里?为什么要投钉钉部门?
  6. 你对互联网行业加班现状怎么看?你对加班的态度怎样?

提问环节:

(1)实习生待遇怎样?

(2)转正率高不高?(阿里实习期间如果表现正常基本都能转正,除非自己不想转正)

(3)加班情况怎样?(除了大版本更新,平时不会像拼多多那么肝,一般晚上九点就清场了,周末基本也不用加班)

面试经验总结

  • 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你 的简历来问的;
  • 注重计算机基础。对自己投递岗位需要的技能足够熟练,对其他岗位需要的知识也要有所了解。
  • 注重算法。很多人都没有意识到算法的重要性,国外的企业都在问算法题,国内大厂算法现在也是必不可少的,算是行业风口,掌握算法的人将拿到更多的机会。
  • 关注技术视野。技术视野是大家容易忽略的一个点,包括深度和广度,包括阿里在内的很多大厂面试都很看重这个。有些人面试答得很好,却给面试官留下一个视野狭窄的印象。
  • 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试 之前好好回顾一下自己所做的项目;
  • 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是 如何使用的;
  • 建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

另外,希望学弟学妹早有规划,不妨正式工作前来阿里实习多看看。如果你觉得自己目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

面试官通常会问一些开放性的问题,对你的思维拓展能力、多方位的思考能力也是一种考验

永远不要打无准备之仗!早做准备,多做准备!

下面分享一下我之前刷过的面试题以及算法资料,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

Java部分

  • 操作系统相关
  • JDK&JVM&JRE
  • 面向过程 & 面向对象
  • 八大基本数据类型&引用类型
  • 数组
  • Java异常
  • 集合(容器)
  • 线程
  • 泛型
  • 反射
  • 注解
  • Socket编程
  • 设计模式
  • JVM相关

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_生命周期_02

Android部分

Activity

  • 典型情况下的Activity生命周期?
  • 异常情况下的Activity的生命周期 & 数据如何保存和恢复?
  • 从Activity A跳转到Activity B之后,然后再点击back建之后,它们的生命周期调用流程是什么?
  • 如何统计Activity的工作时间?
  • Activity的启动模式 & 使用场景
  • 如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity?
  • Activity的启动流程(从源码角度解析)?
  • Activity任务栈是什么?在项目中有用到它吗?说给我听听

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_生命周期_03

BroadcastReceiver

  • 广播是什么?
  • 广播的注册方式有哪些?
  • 广播的分类 & 特性 & 使用场景?

ContentProvider

  • 什么是内容提供者?
  • 说说如何创建自己应用的内容提供者 & 使用场景
  • 说说ContentProvider的原理
  • ContentProvider,ContentResolver,ContentObserver之间的关系
  • 说说ContentProvider的权限管理

Service

  • 什么是Service?
  • 说说Service的生命周期
  • Service和Thread的区别?
  • Android 5.0以上的隐式启动问题及其解决方案。
  • Service保活方案
  • IntentService是什么 & 原理 & 使用场景 & 和Service的区别。
  • 创建一个独立进程的Service应该怎样做?

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_生命周期_04

Handler

  • 子线程一定不能更新UI吗?
  • 给我说说Handler的原理
  • Handler导致的内存泄露你是如何解决的?
  • 如何使用Handler让子线程和子线程通信?
  • HandlerThread是什么 & 原理 & 使用场景?
  • 一个线程能否创建多个Handler,Handler和Looper之间的对应关系?
  • 为什么Android系统不建议子线程访问UI?

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_生命周期_05

AsyncTask

  • AsyncTask是什么?能解决什么问题
  • 给我谈谈AsyncTask的三个泛型参数作用 & 它的一些方法作用。
  • 给我说说AsyncTask的原理
  • 你觉得AsyncTask有不足之处吗?

Fragment

  • Android中v4包下Fragment和app包下Fragment的区别是什么?
  • Fragment的生命周期 & 请结合Activity的生命周期再一起说说。
  • 说说Fragment如何进行懒加载。
  • ViewPager + Fragment结合使用会出现内存泄漏吗 & 如何解决?
  • Fragment如何和Activity进行通信 & Fragment之间如何进行通信?
  • 给我谈谈Fragment3种切换的方式以及区别 & 使用场景。

文件存储

  • 说说Android中数据持久化的方式 & 使用场景
  • 接触过MMKV吗?说说SharedPreference和它的区别
  • 第三方数据库框架用过哪些?有没有自己封装过一个SQLite的库
  • SQLite是线程安全的吗 & SharedPreference是线程安全的吗?
  • 请简单的给我说说什么是三级缓存?
  • SharedPreference的apply和commit的区别
  • 谈谈你对SQLite事务的认识

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_使用场景_06

ListView & RecyclerView

  • ListView是什么?如何使用?
  • RecyclerView是什么?如何使用?如何返回不一样的Item。
  • ListView和RecycyclerView的区别是什么?
  • 分别讲讲你对ListView & RecyclerView的优化经验。
  • 给我说说RecyclerView的回收复用机制
  • 说说你是如何给ListView & RecyclerView加上拉刷新 & 下拉加载更多机制
  • 谈谈你是如何对ListView & RecycleView进行局部刷新的?

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节_使用场景_07

图片编程

  • 你对Bitmap了解吗?它在内存中如何存在?
  • 有关Bitmap导致OOM的原因知道吗?如何优化?
  • 给我谈谈图片压缩。
  • LruCache & DiskLruCache原理。
  • 说说你平常会使用的一些第三方图片加载库,最好给我谈谈它的原理。
  • 如果让你设计一个图片加载库,你会如何设计?
  • 你知道Android中处理图片的一些库吗(OpenCv & GPUImage …)?

WebView

  • WebView会导致内存泄露吗?原因是什么?解决方式有哪些?
  • 你知道Hybrid开发吗?说说你的相关经验
  • 说说WebSettings & WebViewClient & WebChromeClient这三个类的作用 & 用法。
  • 说说你了解的Hybrid框架。
  • 如何提高原生的WebView加载速度?
  • 谈谈你对webView工作机制的认识,你在项目中优化过它吗?说说是从哪些方面着手的?

ViewPager

  • 什么是ViewPager?说说它的那些适配器。(校招&实习)
  • 你了解ViewPager2吗?和ViewPager 1有哪些区别?
  • ViewPager + Fragment结合使用存在的内存泄漏的原因是什么?如何解决?

View事件分发机制

  • 什么是事件分发机制?主要用来解决什么问题?(校招&实习)
  • 给我说说事件分发的流程 & 你项目解决事件冲突的一些案例。
  • 分别讲讲有关事件分发的三个方法的作用及关系。
  • 如果我在一个设置了点击事件的TextView中dispatchTouchEvent方法强制返回ture或
    者false会发生什么?
  • 谈谈你对MotionEvent的认识?Cancel事件是什么情况下触发的?
  • requestLayout(),onLayout(),onDraw(),drawChild()区别和联系?


标签:面试官,如何,堪比,面试,线程,太太,Activity,Android
From: https://blog.51cto.com/u_16163452/6511710

相关文章

  • 大厂技术总监总结的Android Framework开发笔记火了!知乎已1.7k赞!不吃透都对不起他
    为什么要学AndroidFramework?想要成为一名优秀的Android开发,就需要有一个完备的知识体系,AndroidFramework的知识是很重要的一个组成部分,他广泛的应用在各个领域。像掉帧监控,函数插装,慢函数检测,ANR监控,启动监控,都需要对Framework有比较深入的了解。只有这样才能知道怎么去做监......
  • 又一开源项目爆火于GitHub,Android高级插件化强化实战
    一、插件化起源插件化技术最初源于免安装运行Apk的想法,这个免安装的Apk就可以理解为插件,而支持插件的app我们一般叫宿主。想必大家都知道,在Android系统中,应用是以Apk的形式存在的,应用都需要安装才能使用。但实际上Android系统安装应用的方式相当简单,其实就是把应用Apk......
  • Kotlin版本的WanAndroid项目实战(三):Kotlin的集合
    集合概述学习方法:扫描一遍下述表格中集合相关的有哪些操作,具体使用时再可以详细去查构造集合Kotlin里面添加了可变集合的概念,目前只是一种接口级别的限制,底层实现还是可变的集合,不是线程安全的,还是可以通过Java代码修改内部元素迭代器(1)Iterable接口的继承者(包括Set与......
  • 从入门到精通,Android Jetpack 架构实战教程合集
    Jetpack是Google推出的一些库的集合,包含组件、工具、架构方案等,其优势众多:可以减少空指针异常崩溃、内存泄漏,为开发出健壮且流畅的程序提供强力保障;可以消除大量重复样板式的代码,加速Android的开发进程;可以统一开发模式,抛弃传统的MVC,MVP…对于谷歌而言,AndroidJetpack是他......
  • 阿里P7架构师整理:最新Android 开发源码精编内核解析
    做Android开发多年,我们都深知阅读源码的重要性,阅读源码可以帮助我们:①在通用型基础技术中提高技术能力,凸显出自己的技术实力;②在重点领域打造自己的亮点,参与技术栈的运维,积累丰富的使用经验,成为团队的核心骨干;③从优秀的源码中学习设计模式的应用,和有用的编码技巧。但是平时读源码......
  • Android性能优化知识脑图总结+学习手册文档,超干分享!
    近几年,Android开发技术不断发展,岗位要求不断升高,导致程序员的面试也进一步向更深、更广处延伸,比如原先很少涉及的性能优化,现已成为大厂的高频面试题。熟悉性能优化相关内容,就相当于拿到大厂的敲门砖,更是工作中最能突显价值的金字招牌。但众所周知,想要学习和掌握性能优化,就必须有实......
  • Android组件开发简介
    一、背景一个app随着业务增加,代码放在同一个模块中会越来越臃肿,同时也导致多人开发的一个难度。组件化可以把业务单独分出来,形成一个单独模块,可单独运行、测试等,相互之间不会影响。另外一个优势,如果一个公司有多个app,总会出现一些相同业务,如登录/注册。我们可以单独把公共业务封装......
  • Android 换肤之资源(Resources)加载源码分析(一)
    本系列计划3篇:Android换肤之资源(Resources)加载(一)—本篇setContentView()/LayoutInflater源码分析(二)换肤框架搭建(三)看完本篇你可以学会什么?Resources在什么时候被解析并加载的Application#ResourcesActivity#Resourcesdrawable如何加载出来的创建自己的Resources加......
  • 【Android】一文读懂 Activity 的生命周期
    作为Android开发人,如果说连Activity生命周期都没搞懂,会走非常多的弯路,所以这篇文章我就对Activity生命周期的生命周期进行一个简单的总结。单Activity生命周期的整体流程首先,我们创建一个My_A_Activity,并且打印它的各个生命周期方法。classMy_A_Activity:AppCompatActivity(){......
  • Android代码检查规则Lint的自定义与应用
    前言:在日常的代码开发中,此处相信每个开发人员对代码质量都是高要求,有自己的一套代码规范,但是我们不是单独作战,往往大家都是团队作战,人是最大的变量,各人各异,如何保证团队的代码质量和代码规范呢?靠开发者自觉吗?也许有的团队有严格的CR机制,在MR阶段会进行CR,CR不通过的MR是不允许合入的......