双非本科,不是计算机专业科班出身,Android开发4年多中大厂
前言
本月由于公司团队解体无奈离职,此刻正值互联网行业寒冬再度袭来,传闻中小厂接连倒闭、大厂裁员或严格限制招聘名额,这让我内心颇感恐慌和不安。在紧张焦虑地准备求职材料一个多星期后,加上中间穿插着颈椎康复治疗,我终于鼓足勇气开启了求职之路。然而,现实却并不如预期,自从在某个周日晚上十一点将简历上传至招聘网站后,至今并未接到任何猎头的来电,感觉简历仿佛石沉大海,市场似乎真的进入了极度寒冷的时期。
个人简介
双非本科,不是计算机专业科班出身,四年多Android开发实战经验,同时还具备半年iOS开发和JavaScript小游戏开发经历。个人技术水平大致相当于百度T5级别以下(此前曾尝试应聘百度,遗憾止步于第四轮技术面试)。我长期在初创型小公司打拼,所在团队规模最多不超过90人,大多数时候我独自承担起了一个乃至多个APP的全程开发任务。虽然在应对产品需求频繁变更的过程中,我得以接触和学习了广泛的技术领域,但由于人手紧张、工作繁重,导致我在某些专业技术领域的深度挖掘还不够充分。现如今,尽管简历已经挂在招聘网站多时,却鲜有人问津,面对如此严峻的市场环境,我也在不断调整策略,期待能找到适合自己的工作机会。
高频题集
下面的题是混合了我面过的公司中还记得起来的题目,每个类型都大致是按照出现频率倒序排列的,有些题目其实只是一系列问题的引子,让面试官和候选人打开话题的。
- SD卡
- android的数据存储方式
- BroadcastReceiver
- sp频繁操作会有什么后果?sp能存多少数据?
- dvm与jvm的区别
- ART
- Activity的生命周期
- Application能不能启动Activity
- Activity的状态都有哪些
- 横竖屏切换时Activity的生命周期Activity的状态都有哪些
- 如何设置activity成窗口样式
- Activity的启动方式
- Service的生命周期
- IntentService
- Fragment和Activity的onCreateOptionsMenu
- Service的onStartCommand有几种返回值
- Service的onRebind什么情况下执行
- Handler防止内存泄露
- IntentFilter的匹配法则
- Fragment与Activity传值
- Fragment 生命周期
- Fragment的add和replace的区别 //replace==remove|append
- Fragment如何实现Activity栈的压栈和出栈
- 什么情况下造成内存泄露
- 图片过大导致OOM
- SoftReference跟WeakRefrence的区别
- dp与px
- 设置布局为一半宽、高
- 多分辨率支持的清单文件配置
- Android的事件分发机制
- ArrayList和LinkedList的区别
- LruCache
- 什么是ANR,如何规避
- 描述Service的启动方式
- Android有哪几种布局
- HashMap、HashTable的区别 //从线程安全性、速度
- 红黑树
- Handler Looper 工作原理
- Listview的几种adapter介绍
- 如何在ListView间添加分割线
- LinkedHashMap 源码解读
- Drawable转Bitmap
- Layout_weight
- android:layout_gravity和android:gravity的区别
- 如何重用布局
- 使用merge减少include布局所造成的布局层次
- 如何优化布局
- android:layout_gravity的使用规则
- TextView显示图像
- SpannableString的使用
- AutoCompleteTextView的使用
- 在按钮上显示图像的方式有哪些
- 如何动态改变Button的大小和位置
- 如何让一个显示图像的按钮在不同状态下显示不同图像
- 如何实现图像的半透明度
- HttpURLConnection
- ProgressBar
- AbsListView
- ListView,如何进行数据的增删改查
- ListView中如何显示数据库中的数据
- android TypedArray
- 如何动态加载apk文件(未安装)的类
- Android ContentProvider
- 如何设置Activity为程序启动的默认Activity
- 启动Activity的几种方式
- Activity传递数据的方式
- 如何将Activity设置成半透明的模态框
- 如何接收广播
- 如何获取短信内容
- 如何拦截手机屏幕休眠和唤醒
- 如何发送广播
- AIDL与Service
- 如何读取联系人信息
- 请描述Content Provider的uri由哪几部分组成
- 介绍开发ContentProvider的步骤
- 如何为ContentProvider添加访问权限
- AlertDialog
- 如何自己控制对话框的关闭时机
- 如何改变对话框的透明度
- 如何自己控制Toast的显示和关闭
- 如何使用Notification
- PendingIntent使用 //跨进程intent
- 点击Notification触发Activity跳转
- 如何自定义Notification的view
- 然后为一个Activity添加选项菜单
- 如何将上下文菜单绑定至可视组件View
- 在单击菜单时,如何能跳转进别的Activity
- 菜单的回调函数有哪些
-
如何使用SharedPreferences存取数据
-
SharedPreferences //构造函数(string name,int mode)
-
Android如何解析xml文件
-
gson
-
如何将table1表的数据和结构复制到table2上
-
SQLite
-
SQLiteOpenHelper.getReadableDatabase和SQLiteOpenHelper.getWritableDatabase将数据库文件放哪了
-
然后将带数据的SQLite同apk一起发布
-
Socket连接成功后,怎么获取服务器的ip和域名
-
BufferedInputStream mark //只有BufferedInputStream实现了mark方法
-
如何打开手机中的蓝牙功能
-
如何获取已绑定的蓝牙设备
-
搜索蓝牙的过程中经过哪些状态
-
隐式Intent
-
如何采用广播监听去电和来电
-
Android支持的电话状态
-
Android如何控制接听和挂断电话
-
请给出访问通话记录的Content Provider URI
-
发送短信 //需要动态请求权限:android.permission.SEND_SMS
-
ContactsContract
-
VideoView 播放视频
-
在工程路径下的res/drawable存放tree.png,如果将图片显示在View上
-
调用Drawable进行绘图
-
如何设置图像透明度
-
如何旋转View
-
Activity 切换
-
Android
-
动画
-
属性动画 Animator
-
定义字符串数组资源
-
图层layer资源
-
Clip图像资源
-
ShapeDrawable
-
如何统一设置多个View的android:textSize和android:textColor
-
属性动画 Animator123布局文件中的”@“、”+”、”?”含义
-
Android获取屏幕高度和宽度的办法
-
AsyncTask
-
Intent可传递的数据类型
-
AlarmManager //闹钟
-
HandlerThread
-
自定义ViewGroup
- JVM的GC算法
- OkHttp
- ButterKnife //源码阅读
- Dalvik内存模型
- ART垃圾回收
- JVM 可达性分析中哪些对象可以作为根节点
- HashSet
- SSL中的对称加密和非对称加密
- Handler的内存泄露问题
- Android volatile关键字
- EventBus 源码阅读 //反射Class通常采用通配符 =>Class<?>或者Class<? extends T>
- String a=“ abc”;String b=“ abc”; 创建了几个对象 //栈存放引用变量 堆存在new出来的对象,并且堆划分出一部分作为常量池
- java的单例创建
- Android进程优先级
- ThreadLocal 源码
- 自定义View对象
- Android @Override //重写
- Android Semaphore机制
- Android Lock同步
- ThreadPoolExecutor 线程池
- Android下载图片通过bitmap设置ImageView
- ImageView
- onSaveInstanceState //保存app数据,当系统因内存不足时而销毁app,会得到调用
- ViewPager&PagerAdapter&TabFragmentPagerAdapter
- Fragment在横竖屏切换时的数据保存
- DialogFragment //采用子类继承的方式进行使用,相比AlertDialog由FragmentManager负责自动重建
- SQLiteDatabase
- IntentFilter的匹配规则
- Android多进程
- Android Scroller
- Sqlite 连接操作
- Spinner
- RelativeLayout 源代码
- Message //static Message sPool,指向队列前头的可用Message对象
- ArrayDeque 源代码阅读
- RecyclerView
- LinearLayoutManager //RecyclerView的布局管理器
- GridLayoutManager
- RecyclerView 使用
- Binder
- ActivityThread //Android应用的主线程
- CountDownLatch 线程同步
- retrofit
- ClassLoader 类加载器
- RxJava