阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节
本人研究生在读,在2月26日找了师兄内推阿里钉钉团队,28号接到了约1面的电话。幸好我提前准备了一个多月的样子,刷面试题、刷LeetCode(面了之后才觉得自己刷少了),对于我这样一个实习生来说题目还是有些偏难,不过在4月20号终于拿到意向书了,听内推人说阿里实习面试没有rank,可能单纯就是流程比较慢,漫长的等待和面试还是值得的呀。
钉钉1面,3月1日(电话面试,1个小时)
本科、研究生学过什么跟计算机相关的课?
tcp、http协议相关;http1.1和2.0区别
堆排序的过程
Java单例有几种方式
静态方法同步和普通方法同步的区别
线程池7大参数、工作原理
点击手机桌面应用图标后发生了什么
View三大流程说了一下,流式布局FlowLayout怎么实现的
retrofit原理,看过okhttp源码,讲了一下okhttp的工作原理(分发器、拦截器,讲了细节)
聊了项目(讲了好久),几个方面如下:
(1)项目中用了kotlin协程,于是问了协程的相关理念,面试官可能觉得说的不太全,就给补充了一下。 然后说协程这样的新技术国外有人用,国内用的很少(因为使用协程会改变老项目原有网络架构,对于新项目可以使用,想要取代老项目比较困难)。
(2)如果用户反应app有问题,该怎么解决?回答网络抓包,面试官说大型项目不可能通过抓包来找问题,后来经过暗示,正确做法应该是生成日志文件并提交到服务器。
(3)聊了项目中登录相关的业务怎么实现的(将服务器响应的token持久化并添加到请求头)。
- 提问环节。问了面试官kotlin在企业应用中是否有用到,面试官说由于Java和kotlin并不冲突,因此在项目中是共存的。
第二天下午接到了约2面的电话,就约在当天晚上
钉钉2面,3月2日(电话面试,1个小时)
聊了研究生、本科阶段得过哪些奖,做过哪些项目或者参加过哪些比赛。具体问了本科参加过的一个水中机器人的比赛(stm32单片机做的),怎么识别水中的路线之类的一些细节;又问了简历中的一个医疗机器人的项目(遇到了哪些问题、只是实验室做着玩还是准备用在现实生活中);又问了参加过的数学竞赛,这个竞赛考察了什么能力等等。
问设计模式,Android源码或者第三方开源框架应用设计模式举例?(说了okhttp拦截器责任链模式)
自己的项目有没有用设计模式?(retrofit单例,用的kotlin的object关键字实现)Android源码中你认为有哪些方面设计的很优秀的地方?(说了Android view体系)
聊kotlin,kotlin相比于Java有哪些优势、具体有哪些特性、语法糖之类的
谈谈对mvvm、mvc架构的理解,为什么你要在项目中使用mvvm?(当然是Google推荐使用mvvm)
聊对工作、学习方面的态度,应该具备什么能力等等
三道算法题(说思路):
(1)二叉树的最近公共祖先(只想出来一种比较笨的方法)
(2)遍历二叉树的第k层节点(递归迭代都讲了)
(3)给一个中文字符串“一万两千八百一十一”(只是个例子),输出这个字符串对应的数值(没想出来)提问环节,问了部门的氛围如何之类的
二面之后参加了阿里的第一次笔试,两道力扣hard题,血难,加上我之前没练过ACM输入输出,最后一道也没过0分
(1)力扣1411:网格图涂色的方案数
(2)力扣815:公交路线
笔试之后心态崩了,觉得0分应该进不了阿里了,没想到过了两周二面的面试官给打了个电话,说前两面的面试成绩挺好,可以再给一个机会,用阿里伯乐平台出了4道题(其实是前两道有点难,第一道贪心算法,第二道工厂模式+策略模式+多线程都不会),才又出了后面两道简单的算法题,一个反转字符串中的单词,一个求链表倒数第k个节点,这俩写出来了。一周之后接到了3面的电话。
钉钉3面,3月24日(电话面试,40分钟)
自我介绍
聊项目,mvc、mvp和mvvm架构各自的特点;在项目中最具有挑战的是什么?项目收获到了什么?
算法题:给两个字符数组,举例:{h,e,l,l,o, ,w,o,r,l,d}和{e,o},如果第一个数组中存在第二个数组中的元素则去掉,后面的元素往前顺移,结果为:{h,l,l, ,w, r,l,d}。要求时间复杂度为O(n),空间复杂度为O(1)。
你认为什么样的人可以称之为技术大佬?如果只有30分钟,你会依据什么来判断一个人是不是大佬?你认为自己身边最厉害的技术大佬是谁?他为什么会成为大佬?你愿不愿意推荐他到我们顶顶团队(我说他投了蚂蚁,面试官说他做了错误的选择....)?如果让你在半年之内达到他的水平,你的学习规划是什么?你会不会向他请教学习方法?
反问:
(1)大厂对新技术的态度是怎样的?
(2)鸿蒙会不会取代Android?Android的前景怎样?面试官先问了我的观点,后来说了自己的观点:不会。
为什么不会?这个要自己查找最近几年出现的智能手机系统,它们为什么没有Android和iOS成功,从中找答案。
钉钉HR面,3月30日(钉钉视频面试,20分钟)
自我介绍,开了共享屏幕现场给HR展示了之前的一个项目
你的项目UI界面是自己设计的吗?
你对未来的规划是什么?
有没有投别的大厂?
大厂有很多,为什么要投阿里?为什么要投钉钉部门?
你对互联网行业加班现状怎么看?你对加班的态度怎样?
提问环节:
(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
- Android中v4包下Fragment和app包下Fragment的区别是什么?
- Fragment的生命周期 & 请结合Activity的生命周期再一起说说。
- 说说Fragment如何进行懒加载。
- ViewPager + Fragment结合使用会出现内存泄漏吗 & 如何解决?
- Fragment如何和Activity进行通信 & Fragment之间如何进行通信?
- 给我谈谈Fragment3种切换的方式以及区别 & 使用场景。
文件存储
- 说说Android中数据持久化的方式 & 使用场景
- 接触过MMKV吗?说说SharedPreference和它的区别
- 第三方数据库框架用过哪些?有没有自己封装过一个SQLite的库
- SQLite是线程安全的吗 & SharedPreference是线程安全的吗?
- 请简单的给我说说什么是三级缓存?
- SharedPreference的apply和commit的区别
- 谈谈你对SQLite事务的认识
ListView & RecyclerView
- ListView是什么?如何使用?
- RecyclerView是什么?如何使用?如何返回不一样的Item。
- ListView和RecycyclerView的区别是什么?
- 分别讲讲你对ListView & RecyclerView的优化经验。
- 给我说说RecyclerView的回收复用机制
- 说说你是如何给ListView & RecyclerView加上拉刷新 & 下拉加载更多机制
- 谈谈你是如何对ListView & RecycleView进行局部刷新的?
图片编程
- 你对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()区别和联系?
由于篇幅有限,只能分享部分面试题,更多面试题及答案去我的【GitHub】阅读下载哦~无偿分享给大家,算是一个感恩回馈吧
知识深度
也许上面这些面试题,你通过背一背,就能掌握得八九不离十了,毕竟面试官提的很多问题也是在网上找到的,所以你可能会放松警惕,觉得这样就足够了。
其实不然,大厂面试官还有一个爱好,就是对于每个知识点,都喜欢深入往下问,问到没有问题可以问,或者问到你不会为止,这样提问的目的只有一个,就是试探你对这个知识点的理解深度,如果你无法提供足够深刻的回答,结果往往就是失败。
最后希望大家能够重视面试,不要浪费自己的机会!
阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节的更多相关文章
- 2016/4/14腾讯Android实习面试
腾讯实习面试,面试官会先问你会什么,擅长什么.然后会依照这个问,问的也不是非常偏,问道你不会的就换下一个知识点. 主要问我的有这几个问题 图形学 1.Bizer曲线怎么绘制的.原理是什么 2.对栅格有 ...
- 字节跳动Android实习面试难吗,应该如何应对?
字节跳动的面试难不难其实很难去非常准确的定义,但是能肯定的一点是,字节跳动的面试题都很有水平,真正考察了该岗位在以后工作中需要的能力. 大学学的Java后面又自学Android方向,跟着老师在实验室做 ...
- 新鲜出炉!春招-面试-阿里钉钉、头条广告,美团面经分享,看我如何拿下offer!
之前给大家分享了一个朋友在字节面试的面试经历和拿到offer的过程,过程也算是比较精彩了,感兴趣的朋友可以去翻翻之前的那篇文章.话不多说重点来啦,一直有人发私信问我有没有其他大厂的面经分享啊,我也是联 ...
- 2019 最新 阿里天猫、蚂蚁、钉钉ava 面试题汇总,附答案
Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,这是一些最新面试题,分享给大家. Java基础 面向对象的特征:继承.封装和多态 int 和 Integer 有什么区别 ...
- 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...
- 钉钉头像大小设置 阿里cdn尺寸截取参数设置
默认api的接口返回的avatar字段,是原始图片大小字段,尺寸和空间都是原始大小,如果想节省流量或统一尺寸,可以用阿里cdn自带的尺寸截取功能, 比如钉钉头像 avatar字段 返回值为原始大小ht ...
- 用Python实现阿里钉钉机器人读取数据库内容自动发群通知
最近想把一些预警数据信息按照一定的要求自动发送到移动端APP,最终把目标放在了腾讯的微信和阿里的钉钉软件上,由于刚开始学习python,于是编程工具想用python来实现.微信使用群体最广,通过一天的 ...
- 钉钉、阿里云和PaaS平台的整合开发
钉钉在企业移动办公领域有着很高的占有率,但是可能大家都会觉得,他在企业定制化,数据分析等领域有着很大的短板. 而我们的kintone作为PaaS平台,可以补足这个短板.很多开发者想知道如何利用钉钉还有 ...
- android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码
Android精选源码 一个可以上拉下滑的Ui效果,觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app ...
随机推荐
- Gitlab 定时备份
要求 1.为了能够备份和恢复,请确保你的系统上安装了Rsync #Debian/Ubauntu sudo apt-get install rsync # RHEL/Centos sudo yum in ...
- 4.13、nfs挂载优化及优缺点
1.硬盘:sas/ssd磁盘,买多块,硬件raid5/raid0,网卡吞吐量要大,至少千兆(多网卡bond0) 2.nfs客户端挂载说明: 文件系统有自己的权限,挂载是建立在文件系统之上的,然后更改挂 ...
- CRM系统对企业管理的作用有多大?
随着市场经济的发展,对任何行业的企业来说,客户都是非常重要的一个部分.CRM系统帮助企业做到以客户为中心,它可以根据客户的具体要求进行跟进和反馈,在很大程度上提高公司的客户服务水平和客户满意度,进而提 ...
- Spring源码编译一次性通过&遇到的坑解决方法
前言 spring源码本地编译,按网上的博客参考资料的操作步骤,总是会出现各种莫名其妙的错误.根据错误信息找解决方案,但在自己的环境下又总是编译不过去.结合参加培训学习Jack老师提供的方法,自己多种 ...
- Docker:docker搭建redis6.0.8集群
下载redis镜像 #拉取镜像 docker pull redis:6.0.8 查看版本 #查看版本 docker inspect redis 生成redis.conf配置文件 #在 /home/re ...
- Sqlite3:Sqlite3命令行Linux操作
1.查看sqlite版本 [istester@ietester.com idoxu]$ sqlite3 -version 2.进入sqlite后台操作 指定一个完整文件的路径名,打开或者创建数据库(文 ...
- Kafka:Springboot整合Kafka消息队列
本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 项目结构 pom依赖包 <?xml version="1 ...
- vim下出现^M怎么解决
将window下的文本文件上传到linux上,在读取数据文件时,在每一行数据后会出现^M字符. 为什么会出现这种情况呢: 因为windows.linux.os系统的换行符标准不同: 先了解下概念, ...
- IntelliJ idea -- 在WEB-INF下创建两个文件夹:classes 和 lib
1.首先在WEB-INF下面创建两个文件夹 classes 和 lib 2.文件 --> 项目结构 3.选择路径 4.选择依赖项 5.选择刚创建好的lib文件夹,然后确定 6.选择 Jar D ...
- 第十一章:random库概述
random库是使用随机数的python标准库 伪随机数:采用梅森旋转算法生成的伪随机序列中的元素 random库主要用于产生随机数 使用random库:import random random库的概 ...