Android校招:一位双非本科拿到了头条,小米,京东的offer

今天分享一位应届毕业生的校招面经,大家可以看看查漏补缺。

  • 谢谢那些曾经帮助过我的人。

很多忘记了,能回忆起来的就尽量写多一些。


小米

一面(电话)

Android:

1.内存泄漏的场景,Handler机制
2.四大组件
3.进程间通信
4.自定义view
5.Binder的使用
6.性能优化
7.fragment的生命周期
8.事件分发机制,以及涉及到的设计模式

Java:

1.接口和抽象类区别
2.继承和重写
3.ArrayList和LinkedList区别
4.死锁产生条件和应用场景
5.Java的修饰符的使用,static final修饰原理
6.多线程空指针解决方法
7.异常处理流程,何时必须要catch

操作系统

1.进程和线程区别
2.多线程同步和异步问题
3.同步死锁应用场景

设计模式

1.代理模式
2.单例模式以及双重锁原理
3.观察者模式应用场景

数据结构和算法

1.无序数组建立二叉搜索树
2.前序和中序遍历二叉树(我写了递归和非递归)

二面(电话)

1.四大引用区别和引用场景
2.内存泄漏的场景,Handler内存泄漏的原因以及解决方法
3.Handler机制,主线程如何向子线程发送消息,Handler能否多进程通信
4.多线程并发,sychronized,类锁和对象锁
5.线程安全类,StringBuffer和StringBuilder
6.jvm工作内存和主内存,volatile原理,jvm的静态块,内存屏障的实现原理
7.一个m * n的棋盘,一个虫子从左上走到右下方,只能向右或者向下,有多少种走法,可以用组合数学的知识解答
8.静态广播和动态广播区别,service启动的两种方式区别
9.onMeasure的测量模式与特点
10.线程间通信和进程间通信
11.ArrayList删除元素
12.写出你认为最优的懒汉式单例模式
13.activity意外退出时信息的储存与恢复,onCreate正常进入时的判断。
14.JS的交互理解吗?平时工作用的多吗,项目中是怎么与Web交互的?
15.MVC -> MVP -> MVVM 这样变化的原因,MVP的不足,MVVM为什么代替了MVP
16.MVC的情况下怎么把Activity的C和V抽离
17.各个网络框架之间的差异和优缺点,网络框架代替进化的原因
18.图片缓存框架的差异和优缺点,有没有比Glide更好的图片加载框架?
19.项目框架里有没有Base类,BaseActivity和BaseFragment这种封装导致的问题,以及解决方法
20.框架里是怎样实现MVC的
21.Reftofit用过没有,注解实现的好处?
22.项目中的的界面既然是基于View的,有没有动画的处理?
为什么不推荐软引用,软引用在dvm上的垃圾回收机制和jvm上一样吗?
23.LRUCache的删除条件,LRU是什么意思
24.启动页缓存设计 白屏问题
25.网络图片怎么加载?Glide如何确定图片加载完毕
26.项目框架中对多View的支持?
27.Http的request和response的协议组成
28.RecyclerView和ListView相比有哪些好处,为什么ListView被RecyclerView代替?

三面(视频)

1.将知道的操作系统说一遍,引入操作系统的最终目的(计算的功能),进线程区别,虚拟地址的原理和作用,指针是物理地址还是虚拟地址,指针的地址长度的影响因素,32位系统是4个字节,64位系统是8个字节。
2.Java的三大特性,写一个多态的例子,注意命名的规范
3.一个很大的数组,其中有一个数出现的次数是奇数次,其他都是偶数次。求这个数。除了异或写另外一种方法

四面(视频)

1.Android的体系架构,深入到framework,native层
2.单例模式的几种实现具体的区别,工厂模式的种类以及区别
3.对C语言的理解
4.Android的触摸事件分发流程
5.Android第三方框架的源码实现原理

京东

京东的面试题感觉都差不多,难度一般。
印象深刻的如下:

一面(电话)

1.对着我的项目问了一些具体实现的问题
2.一些基础的问题就不想再重复了,比如ArrayList和LinkedList区别
3.最后一道简单的算法题作为结束:求两个字符串的最长公共子串

二面(电话)

1.也是跟一面差不多Java和Android,比如Activity的启动模式,类加载的过程
2.设计模式
2.Activity的启动流程,这个有点意思

今日头条

很多真的忘记了,只记得下面这些了。

一面(视频)

1.讲一下项目,主要是深入框架的源码
2.Java忘记问啥了,Android问启动模式的时候,对四种启动模式的实际运用问得比较深,还有触摸事件的细节问得深
3.sp的commit和apply区别
4.左连接和右连接区别
5.算法:输出二叉树每层的最大值

二面(牛客网视频)

1.集合类,线程安全如何实现,写一个算法ArrayList删除所有值是50的。
这里有坑:http://blog.csdn.net/lazy_p/article/details/7365324
除了遍历还有更优的方法吗?想不出来。换成LinkedList性能如何?
2.异常类的继承结构,如何捕捉异常,如何全局捕捉异常并上报
3.数据的存储方式与其的应用场景,ContentProvider的底层实现,如何保证多进程读写安全
4.类加载,jvm内存模型
5.自旋锁
6.Linux的fork
7.数据库的ACID
8.手写反转链表

三面(视频)

1.intent是什么来的?为什么不是动作,用来干什么的?
(什么向什么表现什么意图)
2.为什么设置tcp三次握手,四次挥手
3.hashmap的底层实现
4.场景题分析:手机扫网页端的二维码如何提起的登录的过程,是如何实现的?
5.Service的源码
6.Handler的实现,Looper怎么终止。
7.项目是MVC,那根据自己负责的项目讲下Model、View、Controller层
8.问了下昼夜模式、多语种、屏幕适配的问题,追问了下,如果要关闭昼夜模式功能怎么办?很多类的话,一个个去关吗?
9.有没有接触过JNI和NDK?
10.ListView的错位问题原因以及如何处理?
11.如何设计一个抽奖系统,比如满200抽20,满500抽50

关于面试的充分准备

一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。

有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

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

好了,希望对大家有所帮助。

接下来是整理的一些Android学习资料,有兴趣的朋友们可以加我wx:X1524478394 免费获取

①Android开发核心知识点笔记

②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图

③面试精品集锦汇总

④全套体系化高级架构视频

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

上述【高清技术脑图】以及【配套的架构技术PDF】可以 加我wx:X1524478394 免费获取

原文地址:https://blog.51cto.com/14332859/2460449

时间: 2024-10-29 19:06:15

Android校招:一位双非本科拿到了头条,小米,京东的offer的相关文章

Android 开发面经,历时两月斩获BAT+头条四个公司 Offer

拿了 BAT+头条 四个 offer:同时也在帮公司招聘,筛选简历并面试.对技术面试这回事有一些体会,在此分享. 坦白说,我对我个人在这次求职中的表现并不十分满意,面试前没有做足够充分的准备--数次被面试官出的题目"虐".应对面试的压力时没能做到沉着冷静.在面试中未能完整地把自己的积累与优势表现出来--所以本篇文章并不是一个"成功者"的经验分享,而是一个普通人经历过各种面试后的一个总结与反思. 一.面试前的准备1.1 简历在替公司筛选简历时我对同事说,简历是向陌生的

3年,从双非到百度的学习经验总结

01 近年来,有些读者会问我一些形形色色的问题,让我很难去回答,甚至给不出建设性的意见. 举个例子: 我学习什么能进入优秀的互联网公司工作? 我想做研发我应该学习什么? 众所周知,这问题就像你问学霸说你这么厉害一样让人难以回答.我作为一个双非软工本科学生,经过大学自己摸索和不断试错,毕业开始在百度从事研发工作.其实,我当时也有很多的疑惑,在这里给大家讲讲我的踩坑历程. 记忆中,我当年逛知乎.求助高人.甚至我的导师,都无法给出一个可操作的建议.除此之外,在我那种二本学校,知名企业都不会去咱学校校招

Android开发之用双缓冲技术画图

双缓冲技术主要用在绘图,动画效果上,其原理就是:将资源先加载到缓冲区,然后再将缓冲区整个加载到View上面去.双缓冲技术能够有效防止闪烁,提高显示质量. DrawView.java: package com.example.handdraw; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.C

中山大学软件工程专硕考研经验(双非跨考)

我是一名双非医科大学的本科生,因为不是很喜欢这个专业,并且对计算机感兴趣(喜欢写代码hhh),最后就决定跨考计算机了. 为什么选择中大呢?说来话长,很多人可能觉得我自不量力,双非跨考还考中大,但是因为有认识的朋友在中大,而且中大离我的学校很近,各种原因,选了中大软件工程专业. 因为一方面觉得数学一英语一比较难,另一方面中大软工专硕招人比学硕多很多,所以最后就选了软工专硕(数学二英语二,政治,408) 第一年考研 第一年(2018年)考研,我是7月份才开始复习,数学真是学得头痛,一开始我真是傻了得

一次幸运的校招小米Java后台offer

背景 我是一个非985/211的本科.其实最开始并不怎么自信,靠的就是一帮×××互相的鼓励,才坚持到了现在.我小米的面试机会是亲戚给内推的,因为碰巧他们部门校招没有招满,所以很幸运的拿到了这个机会.提一点,我面的是Java后台岗. 面试开始 先申明一点,虽然我通过了面试也拿到了offer,但是至于我是否真的答对了题目,我也不知道,所以这里为了避免误人子弟就不把我的答案发出来了,如果有兴趣可以自行百度,google. 一面: 1.10 亿个 URL,每个 URL的大小< 56B,要求去URL进行去

Android面试题-机型适配之痛,例如三星、小米、华为、魅族等。

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Android面试题-机型适配之痛,例如三星.小米.华为.魅族等. - 所有技术文章里面全部配置了配套视频 - 博客频道 - CSDN.NET 所有技术文章里面全部配置了配套视频 https://github.com/open-android/Android 目录视图 摘要视

64位双系统Ubuntu 14.04 LTS + Caffe + CUDA 7.5 + Opencv 3.0 安装配置实战

一切的一切,开端便是这caffe,作为博客的第一篇文章,自然要讲讲一个哲学问题"我是从哪来的" 一.windows情况下安装双系统64位Ubuntu 本段落根据http://www.linuxidc.com/Linux/2014-04/100369p2.htm而成. 下面开始: 1)首先还是分区,在计算机上右键--管理--磁盘管理 装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,配好整个环境就要消耗10G左右,再加上数据集和各种库,空间太小非常尴尬.这里请注意,Ubuntu和

Centos 6.5 64位双网卡绑定

1.环境描述      我的Vmware workstation 10 安装Centos 6.5 64位加上双口的Intel千兆网卡,通过ifconfig -a|grep eth命令看到eth2和eth3两张网卡. 2.双网卡绑定步骤: 2.1 修改/etc/sysconfig/network-scripts/ifcfg-eth2配置文档,修改后的内容如下:    DEVICE=eth2       ONBOOT=yes              #系统启动时自动启用该设备    BOOTPRO

[Android]实现简单的任务管理器(非root)

由于不是系统级的应用, 也没有获得ROOT权限, 所以自己实现任务管理器其实意义并不是很大, 就像没有root的手机安装了LBE这类的手机助手, 虽然也带一键清理内存清理后台进程的功能, 但由于手机助手没有ROOT的最高权限, 因此面对开启了守护进程或者其他自启动的应用进程也是手无举措. 而随着谷歌的推动, 即将推送面世的新系统Android  M, 也对权限的管理越来越严格, 这也看出一个趋势, 对移动系统的安全和稳定性要求是越来越高. 虽然意义并不是很大, 但我们还是来练练手吧, 说不定哪天