2018年美团Android校招
写在前面
今天和一同学吃饭,互相诉了一波苦。他吐槽了一下这周五去美团面试不是很顺利,我吐槽了一下,业务大改版。这一个月恐怕要疯狂加班...
他提到美团的时候,这让我想起来了2017年10月中旬的时候,那场莫名其妙的美团校招面试邀请...记得很清楚,当时我在一家创业公司实习,那天是周四下午。电话约面试,时间是周六(也是神奇)。然后周五公司业务上线,很晚回家。周六是昏昏沉沉的去面了试...有点小遗憾,如果好好准备一下,调整下状态。没准我现在就在望京研发园工作了...意淫.png
到了美团大厦,也看得出来美团在赶时间,一个大厅同步在面试,一面完成之后紧接着二面,三面。
很幸运的走到三面,也很遗憾的只走到了三面。我是提前到场,偷听到了他们HR的交谈,说今天是面签,所以在听到三面面试官说到回去等通知,就知道挂了。虽然有些遗憾但也无所谓毕竟的确还是发挥的并不好。
以下只记录问题,因为答案是什么我也不清楚…很多内容扣的很细。
正文
一面
- 说一下常用的排序算法?
- 说一下快排的思想?
- 一个有序数组集合,找一个下标,你的思路是什么?
- 完全二叉树和满二叉树的区别?
- 操作系统怎么样?(回答:不怎么样,面试官笑了笑,也没在意)
- Activity的生命周期相关?
- 从栈顶Activity回到栈底Activity的解决方法都有什么?
- 异常情况杀死Activity怎么保存数据?
- 卡顿情况的产生,定位和解决?
- View的整体绘制流程?
- 手写一个方法获得当前布局的层级深度?
- 常用的垃圾回收?
- 谈一谈JVM?
- 谈一谈你对MVP和MVVM的看法?
一面整体很顺利,面试官也没有深入的问下去,就让我直接去了二面。
二面
- 手写输出一个二叉树的侧面图。
- 手写一个你最熟悉的排序算法。
- 有一个类怎样改变内部final类型的变量。
- final修饰变量、方法、类都有什么特性。
- static修饰变量、方法、类都有什么特性。
- 处理过内存泄漏么,都用什么样的方法处理的,为什么。
- 说一下你经历的项目中印象最深刻的一个点。
- 聊一聊你最擅长的安卓地方。
- 看过哪些开源项目,聊一聊。
二面就有些磕磕绊绊,一开始的手写算法就卡住了,因为那个时候算法是自己的弱项。磕磕绊绊写了写思路,也就对了50%。而且面试官很强势的一再追问,自己险些没有招架住,所以接下来心态有点崩,很多问题即使是会,也答的有些心虚。后来算是有惊无险的进了三面。
三面
- 手写一下遍历二叉树的层度。
- 图的深度遍历的实现方法。
- 消费者生产者模型。
- 聊一聊aidl,谈一谈Binder机制,Service通讯的方案。
- 最近在做什么,(做锁屏),聊一聊实现的思路,怎么提高锁屏出现的成功率。
- 自定义View思路,需要注意什么。
- Handler机制,为什么loop是死循环。
- 聊一聊你做的最复杂的自定义View。
- 聊一聊事件分发
三面的话整体很崩,其实问题很大众化,但是每一处都问的很细,比如事件分发:为什么dispatch里边DOWN事件不能拦截。mFirstTouchTarget作用…等等总之问的非常的细…
面试整体看来,算法问的太多了,不是说题多,而是占用时间比较多。基本上来说50%时间都是在问算法,30%再问Java的基本特性的细节。剩下的20%算是安卓。因为安卓看的还是比较深的,所以基本上没被问住。但是算法真的很蛋疼…
尾声
所以在这里,建议如果有将要毕业找工作的童鞋们,如果有准备去美团的,可以着重准备准备算法内容,刷一刷题之类。祝各位好运啦~
推荐一个立志减少IT面试踩坑的公众号
因为身边的同学从事互联网相关职业的比较多,并且大家闲时聊天时总会吐槽找工作有很多坑,所以打算把身边同学找工作的经验,统统收集起来。提供给想从事这方面同学,希望圈内好友可以共同进步,共同少踩坑。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Xamarin.Android SharedPreferences的使用方法
SharedPreferences的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。 这里只讲有关SharedPreferences的基本增删改查操作,模拟一个登陆记住账号密码的功能。 新增一个User节点,保存用户名张三、密码666666 GetSharedPreferences("User", 0).Edit().PutString("UserName", "张三").Commit(); //在User节点下编辑UserName的值等于'张三' GetSharedPreferences("User", 0).Edit().PutString("UserPass", "666666").Commit(); //在User节点下编辑UserName的值等于'666666' 查看保存后的数据是否正确 string UserName = GetSharedPreferences("User", 0).GetString("UserName", ""); //获取Us...
- 下一篇
React Native开发之——Webstorm快捷开发
前言 开发RN的工具有很多,选择性也比较多,常见的有: WebStorm Sublime Text 3 VS Code Nuclide 其他 本文以Webstorm为例讲解 使用Webstorm开发React Native 注:本文默认已配置好React Native开发环境,如:安装JDK,Android SDK,Python,Node,React- Native-cli等,若不熟悉,请先看前文的React Native环境配置。 Webstorm的安装破解请自行百度。 新建React Native项目 如下图,左侧选中React Native,右侧的New Project中有三个选项: Location: 项目的存放位置 Node interpreter: node位置(安装后会默认选中) React Native: react-native-cli位置(安装后会默认选中) React Native构建过程 React Native构建时,下方会出现构建过程,如没有出错,出现Done,说明项目构建完成 构建完成后,项目下会出现文件 Android文件夹:开发Android对应项目目...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2更换Tomcat为Jetty,小型站点的福音