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

  1. 线程池7大参数、工作原理

  2. 点击手机桌面应用图标后发生了什么

  3. View三大流程说了一下,流式布局FlowLayout怎么实现的

  4. retrofit原理,看过okhttp源码,讲了一下okhttp的工作原理(分发器、拦截器,讲了细节)

  5. 聊了项目(讲了好久),几个方面如下:

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

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

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

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

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

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

  1. 聊了研究生、本科阶段得过哪些奖,做过哪些项目或者参加过哪些比赛。具体问了本科参加过的一个水中机器人的比赛(stm32单片机做的),怎么识别水中的路线之类的一些细节;又问了简历中的一个医疗机器人的项目(遇到了哪些问题、只是实验室做着玩还是准备用在现实生活中);又问了参加过的数学竞赛,这个竞赛考察了什么能力等等。

  2. 问设计模式,Android源码或者第三方开源框架应用设计模式举例?(说了okhttp拦截器责任链模式)

自己的项目有没有用设计模式?(retrofit单例,用的kotlin的object关键字实现)

  1. Android源码中你认为有哪些方面设计的很优秀的地方?(说了Android view体系)

  2. 聊kotlin,kotlin相比于Java有哪些优势、具体有哪些特性、语法糖之类的

  3. 谈谈对mvvm、mvc架构的理解,为什么你要在项目中使用mvvm?(当然是Google推荐使用mvvm)

  4. 聊对工作、学习方面的态度,应该具备什么能力等等

  5. 三道算法题(说思路):

(1)二叉树的最近公共祖先(只想出来一种比较笨的方法)

(2)遍历二叉树的第k层节点(递归迭代都讲了)

(3)给一个中文字符串“一万两千八百一十一”(只是个例子),输出这个字符串对应的数值(没想出来)

  1. 提问环节,问了部门的氛围如何之类的

二面之后参加了阿里的第一次笔试,两道力扣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部分

Activity
  • 典型情况下的Activity生命周期?

  • 异常情况下的Activity的生命周期 & 数据如何保存和恢复?

  • 从Activity A跳转到Activity B之后,然后再点击back建之后,它们的生命周期调用流程是什么?

  • 如何统计Activity的工作时间?

  • Activity的启动模式 & 使用场景

  • 如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity?

  • Activity的启动流程(从源码角度解析)?

  • Activity任务栈是什么?在项目中有用到它吗?说给我听听

BroadcastReceiver
  • 广播是什么?

  • 广播的注册方式有哪些?

  • 广播的分类 & 特性 & 使用场景?

ContentProvider
  • 什么是内容提供者?

  • 说说如何创建自己应用的内容提供者 & 使用场景

  • 说说ContentProvider的原理

  • ContentProvider,ContentResolver,ContentObserver之间的关系

  • 说说ContentProvider的权限管理

Service
  • 什么是Service?

  • 说说Service的生命周期

  • Service和Thread的区别?

  • Android 5.0以上的隐式启动问题及其解决方案。

  • Service保活方案

  • IntentService是什么 & 原理 & 使用场景 & 和Service的区别。

  • 创建一个独立进程的Service应该怎样做?

Handler
  • 子线程一定不能更新UI吗?

  • 给我说说Handler的原理

  • Handler导致的内存泄露你是如何解决的?

  • 如何使用Handler让子线程和子线程通信?

  • HandlerThread是什么 & 原理 & 使用场景?

  • 一个线程能否创建多个Handler,Handler和Looper之间的对应关系?

  • 为什么Android系统不建议子线程访问UI?

AsyncTask
  • AsyncTask是什么?能解决什么问题

  • 给我谈谈AsyncTask的三个泛型参数作用 & 它的一些方法作用。

  • 给我说说AsyncTask的原理

  • 你觉得AsyncTask有不足之处吗?

Fragment

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
团等公司2021年的面试题**,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

[外链图片转存中…(img-wZPVmNua-1715424342402)]

[外链图片转存中…(img-YRJoGHoP-1715424342403)]

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值