android 几轮面试小谈

本文分享了一位Android开发者在苏州地区的面试经历,包括面试过程中的提问内容和技术趋势观察,如TCP/IP、混合开发、物联网方向等,同时给出了面试技巧和个人发展建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从毕业,一直在一家公司干了差不多三年半,公司也还可以,有自己的发展方向,我感觉太安逸, 过几年就死了, 对此我要走出去面试了好多家, 总结一下我的面试;我这个人天生厚脸皮,对于面试从来没有紧张过,或许是我大学当班主任,当班长练习出来的,我发现好多面试官很紧张,
其中一家公司做安保系统的,视频通讯那种,问一些偏网络的东西:tcp/ip,post/get(现在用什么okhttp等),自动模拟事件,launcher(自己的系统开发pad),数据刷新有什么框架,视频流的开发等,最后来句你最擅长什么,呵呵,
接着一家公司,一个小帅哥(带着大金链子,很像古惑仔);问了一些简历上面的东西,混合开发了,ionic,cordova,anjularjs,百度sdk定位的方法(gprs和基站),然后问不下去了,因为我做的他应该不了解,然后人事和我扯了一会皮,我再发现这是一家外包公司,我来了句,我对外包反感,然后就走了;呵呵,我建议不要进外包公司,累死你,没有技术含量。
随后有面试了几家公司,好多公司都是试试水,不是真正的面试招人,只是hr的任务,这个月要试水多少个人,大家应该注意,
**其他面试的题目:android mashup设计的理解,binder 简要介绍,touch事件机制,view的绘制流程,lanchermode的使用场景,handle的理解等,java 方面的设计模式随便说说,数据库来了个多表查询,还有许多小细节,工作中遇到的,mvp不怎么使用,就没怎么说,mvc用来好多年。
ndk的开发我遇到的比较多,他们没有怎么问。串口,pos支付遇到问题,外接设备摄像头,麦克风,pos 的适配的,大部分都是用jni 调用,跳过android 应用层的限制等,andrpoid 没有reboot ,怎么盲人更新等,**
面试的过程就是你去了解外面的世界他们有什么需求的过程,我面试的结果:现在的公司都是偏大的公司,小的app 没有什么市场了,苏州最近两年已经倒闭了20%的公司,很多搞android 偏物联网了,前端的市场稍微好点(html5里面好多知识的),苹果有局限性,开发偏android 的硬件居多。这是我个人观点,Android 开发的过程中,我还做过一些混合开发的东西,前端的微信端我也做过几个,触摸屏了heml5,做过几个。所以在开发中,你不光可以做android ,还可以向外延伸,后端,前端,php,等等都可以涉猎的,对于你七年,八年后,不管自己创业还是转型,都是一个多面手(我们老大(工作十年)就是这种没有不会的,佩服的五体投地);我还遇见过一个15年的老程序员,写东西信手捏来,那叫marker 老手;
随后我继续更新,面试的黄金期,应该是7.8月份,前几年就是这个点,
对了,这里是苏州,你们公司要人吗,mark 我,试试水,哈哈,谢谢

### Android Framework 常见面试问题及解答 #### 什么是 Service 的生命周期? Service 是一种可以在后台长时间运行而无需提供用户界面的组件。其生命周期主要包括以下几个方法: - `onCreate()`:当第一次创建服务时调用此方法,在这里可以执行一些初始化操作,例如初始化数据结构或建立数据库连接等[^1]。 - `onStartCommand(Intent intent, int flags, int startId)`:每次通过 `startService` 启动服务时都会调用此方法。可以通过传递参数来处理不同的启动请求。 - `onBind(Intent intent)`:如果服务允许绑定,则返回 IBinder 对象;否则返回 null。 - `onDestroy()`:在服务终止之前调用,用于释放资源。 ```java public class MyService extends Service { @Override public void onCreate() { super.onCreate(); // 初始化逻辑 } @Override public int onStartCommand(Intent intent, int flags, int startId) { // 处理启动命令 return START_STICKY; } @Override public IBinder onBind(Intent intent) { return null; // 如果不支持绑定则返回null } @Override public void onDestroy() { super.onDestroy(); // 清理工作 } } ``` #### Java 中有哪些引用类型?它们的区别是什么? Java 提供了四种类型的引用:强引用、软引用、弱引用和虚引用。每种引用类型都有特定用途并影响垃圾回收行为[^2]。 - **强引用**:最常用的引用形式,默认情况下所有的对象都属于这种引用方式。只要有强引用存在,GC 就不会回收该对象。 - **软引用**:适用于内存敏感环境下的缓存实现。只有当 JVM 即将抛出 OOM 错误时才清理此类对象。 - **弱引用**:比软引用更脆弱,任何时候 GC 运行都可以清除掉由它标记的目标实体。 - **虚引用**:无法阻止目标被回收,并且不能直接访问所指代的内容,主要用于监控某个实例何时被销毁。 #### 双亲委派模型是如何工作的? 双亲委派模型是 Java 类加载器体系的核心概念之一。按照这一原则,每当一个自定义 ClassLoader 被要求载入某类别名的时候,先把这个任务交给父级 Loader 完成(依次向上直到 Bootstrap),仅当下层找不到对应 Classes 才轮到自己尝试解析指定名称对应的 .class 文件。这样做的好处是可以保证基础库的一致性和安全性,防止恶意代码替换核心 API 实现。 ```java protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{ // First, check if the class has already been loaded Class<?> c = findLoadedClass(name); if (c == null){ try { if (parent != null){ c = parent.loadClass(name, false); // Delegate to Parent first. }else{ c = findBootstrapClassOrNull(name); } }catch(ClassNotFoundException e){} if(c==null){ c=findClass(name); // Try self lastly. } } if(resolve){ resolveClass(c); } return c; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值