创业失败后,35岁Android程序员大厂面试之路(附面试题+面试经验)

82 阅读6分钟

多数面试题分析

Activity

  • 生命周期及横竖屏切换时生命周期

  • 启动模式

  • 内存不足时,怎么保持Activity的一些状态,在哪个方法里面做具体操作?

  • 介绍Activity、Service、Broadcast、BroadcastReceiver、Intent、IntentFilter

  • 怎么在启动一个activity时就启动一个service

  • 同一个程序不同的Activity如何放在不同的任务栈中?

  • 如何将一个Activity设置成窗口的样式

  • 如何退出Activity?如何安全退出已调用多个Activity的Application?

  • Activity中如何动态的添加Fragment?

  • activity的启动过程 参考

  • 不用Service,B页面为音乐播放,从A跳到B,再返回,如何使音乐继续播放?

  • windows和activity之间关系?

  • 一个activity打开另外一个activity,再打开一个activity?回去的时候发生了什么操作?

  • onActivityResult(int requestCode, int resultCode, Intent data)方法的用法;


Service

  • 注册Service需要注意什么

  • 什么是Service以及描述下它的生命周期。

  • Service与Activity怎么实现通信

  • Service有哪些启动方法,有什么区别,怎样停用Service?

  • 什么是IntentService?有何优点?

  • Service和Activity在同一个线程吗 main 线程 UI线程

  • Service里面可以弹土司么

  • 如何启用Service,如何停用Service

  • 什么时候使用Service?

  • 说说Activity、Intent、Service是什么关系

  • AIDL,两个android应用间的互相调用方法?

  • AIDL的全称是什么?如何工作?能处理哪些类型的数据


编程算法题

  • 冒泡排序

  • 求素数

  • 单例模式——写一个Singleton出来

  • 二叉树遍历

  • 最长不重复子串(最长重复子串)

  • 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(xffffffff)- 像素点的透明度调整为5%。

  • 写一个求递归程序 求54321

  • 请使用java或者C++实现反转单链表

  • 生产者、消费者

  • 死锁(同步嵌套同步且锁不同)

  • 写一个多线程实例代码;

  • 写一个方法,交换两个变量的值?

  • 给最外层的rootview,把这个根视图下的全部button背景设置成红色,手写代码,不许用递归

  • 给一串字符串比如abbbcccd,输出a1b3c3d1,手写代码(注意有个别字符可能会出现十次以上的情况)

  • 一个序列,它的形式是12349678,9是最高峰,经历了一个上升又下降的过程,找出里面的最大值的位置,要求效率尽可能高

  • 二叉查找树的删除操作,手写代码

  • 二分查找,手写代码

  • 有海量条 url,其中不重复的有300万条,现在希望挑选出重复出现次数最高的 url,要求效率尽可能的高

  • 一篇英语文章,去掉字符只留下k个,如何去掉才能使这k个字符字典序最小

  • 弗洛伊德算法和 Dijkstra算法的区别?复杂度是多少?讲讲 Dijkstra算法的具体过程

  • 反转字符串,要求手写代码,优化速度、优化空间

  • 给出两个无向图,找出这2个无向图中相同的环路。手写代码

感悟

1、在中国你千万不要以为学习技术就可以换来稳定的生活和高的薪水待遇,你更不要认为那些从事市场开发,跑腿的人,没有前途。

2、在学习技术的时候千万不要认为如果做到技术最强,就可以成为100%受尊重的人。

3、你更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。

4、技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢他,但最好不要一辈子靠它生存。

5、每个人的技术都是有天花板的,你的技术到了天花板的时候,你的收入能否满足你,这个是需要考虑的。当然,你家里有矿或者北京二环内有几套房,那你完全可以把技术当爱好。

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!


小福利

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。有**【Android架构视频+BATJ面试专题PDF+核心笔记等资料】。希望能够帮助到大家提升技术。如果大家想要获取的话,可以**简信我【666】免费获取哦~

高级UI,自定义View

面试复习笔记:

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。 节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 给文章留个小赞,就可以免费领取啦~

戳我领取:GitHub

《960页Android开发笔记》

《1307页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。