尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2023 Android面试官 常问的问题以及答案(附最新的Android面试大厂必考174题 )

2023 Android面试官 常问的问题以及答案(附最新的Android面试大厂必考174题 ) 前言已经2023了 但是计算机的寒冬还没有过去 但是我们程序员的热情不会被磨灭有钱就干 越多越有劲。在这个金三银四的季节 许多公司也发布了更多的招聘岗位 面试机会多了 那我们跟要把握住。以下分享一些面试题给大家希望能帮到大家找一份好工作。1.Android与服务器交互的方式中的对称加密和非对称加密是什么对称加密就是加密和解密数据都是使用同一个key这方面的算法有DES。非对称加密加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥使用公钥加密的数据可以用私钥解密反之。这方面的算法有RSA。ssh 和 ssl都是典型的非对称加密。2.Android启动Service的两种方式是什么? 它们的适用情况是什么?如果后台服务开始后基本可以独立运行的话可以用startService。音乐播放器就可以这样用。它们会一直运行直到你调用 stopSelf或者stopService。你可以通过发送Intent或者接收Intent来与正在运行的后台服务通信但大部分时间你只是启动服务并让它独立运行。如果你需要与后台服务通过一个持续的连接来比较频繁地通信建议使用bind()。比如你需要定位服务不停地把更新后的地理位置传给UI。Binder比Intent开发起来复杂一些但如果真的需要你也只能使用它。startService生命周期与调用者不同。启动后若调用者未调用stopService而直接退出Service仍会运行bindService生命周期与调用者绑定调用者一旦退出Service就会调用unBind-onDestroy3.谈谈你对binder机制的理解?binder是一种IPC机制,进程间通讯的一种工具.Java层可以利用aidl工具来实现相应的接口.4.Android中进程间通信有哪些实现方式IntentBinderAIDLMessengerBroadcastReceiver5.介绍下实现一个自定义view的基本流程1、自定义View的属性 编写attr.xml文件2、在layout布局文件中引用同时引用命名空间3、在View的构造方法中获得我们自定义的属性 在自定义 控件中进行读取构造方法拿到attr.xml文件值4、重写onMesure5、重写onDraw6.Android中touch事件的传递机制是怎样的?1.Touch事件传递的相关API有dispatchTouchEvent、 onTouchEvent、onInterceptTouchEvent2.Touch事件相关的类有View、ViewGroup、Activity3.Touch事件会被封装成MotionEvent对象该对象封装了手 势按下、移动、松开等动作4.Touch事件通常从Activity#dispatchTouchEvent发出只要 没有被消费会一直往下传递到最底层的View。5.如果Touch事件传递到的每个View都不消费事件那么Touch事件会反向向上传递,最终交由Activity#onTouchEvent处理.6.onInterceptTouchEvent为ViewGroup特有可以拦截事件.7.Down事件到来时如果一个View没有消费该事件那么后续的MOVE/UP事件都不会再给它7.简述一下RecyclerView缓存机制RecyclerView在Android的应用上可以说已经取代了listview其灵活组装式设置多缓存机制可以适应多列表在Android开发中各种各样的需求。对于RecyclerView的缓存机制一直都想稍微的屡下思路简单点说RecyclerView对比listview缓存机制中就是多了两层缓存的支持listview是两级缓存RecyclerView为四级缓存(当然在大部分情况下是三级缓存)。8.在一个listview里每个item中都有一个动画gif播放的view当我点击item中的button时动画gif播放。当有动画播放时滑动listview偶尔会发生item错位的事件。原因是什么这是item复用的问题由于异步加载导致图片错位9.Android多线程的实现方式有哪些?Thread AsyncTaskThread 可以与Loop 和 Handler 共用建立消息处理队列AsyncTask 可以作为线程池并行处理多任务10.Android开发中何时使用多进程使用多进程的好处是什么要想知道如何使用多进程先要知道Android里的多进程概念。一般情况下一个应用程序就是一个进程这个进程名称就是应用程序包名。我们知道进程是系统分配资源和调度的基本单位所以每个进程都有自己独立的资源和内存空间别的进程是不能任意访问其他进程的内存和资源的。那如何让自己的应用拥有多个进程很简单我们的四大组件在AndroidManifest文件中注册的时候有个属性是android:process1.这里可以指定组件的所处的进程。默认就是应用的主进程。指定为别的进程之后系统在启动这个组件的时候就先创建如果还没创建的话这个进程然后再创建该组件。你可以重载Application类的onCreate方法打印出它的进程名称就可以清楚的看见了。再设置android:process属性时候有个地方需要注意如果是android:process”:deamon”以:开头的名字则表示这是一个应用程序的私有进程否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名而全局进程则不会。一般我们都是有私有进程很少使用全局进程。他们的具体区别不知道有没有谁能补充一下。2.使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大内存越来越多将一些独立的组件放到不同的进程它就不占用主进程的内存空间了。当然还有其他好处有心人会发现Android后台进程里有很多应用是多个进程的因为它们要常驻后台特别是即时通讯或者社交应用不过现在多进程已经被用烂了。典型用法是在启动一个不可见的轻量级私有进程在后台收发消息或者做一些耗时的事情或者开机启动这个进程然后做监听等。还有就是防止主进程被杀守护进程守护进程和主进程之间相互监视有一方被杀就重新启动它。应该还有还有其他好处这里就不多说了。3.坏处的话多占用了系统的空间大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂应为要处理多进程之间的通信。这里又是另外一个问题了。11.Android下解决滑动冲突的常见思路是什么?相关的滑动组件 重写onInterceptTouchEvent然后判断根据xy值来决定是否要拦截当前操作12.如何把一个应用设置为系统应用成为系统应用首先要在 对应设备的 Android 源码 SDK 下编译编译好之后此 Android 设备是 Debug 版本并且已经 root直接将此 apk 用 adb 工具 push 到 system/app 或 system/priv-app 下即可。如果非 root 设备需要编译后重新烧写设备镜像即可。有些权限(如 WRITE_SECURE_SETTINGS )是不开放给第三方应用的只能在对应设备源码中编译然后作为系统 app 使用。13.Android内存泄露研究Android内存泄漏指的是进程中某些对象垃圾对象已经没有使用价值了但是它们却可以直接或间接地引用到gc roots导致无法被GC回收。无用的对象占据着内存空间使得实际可使用内存变小形象地说法就是内存泄漏了。场景类的静态变量持有大数据对象静态变量长期维持到大数据对象的引用阻止垃圾回收。非静态内部类的静态实例非静态内部类会维持一个到外部类实例的引用如果非静态内部类的实例是静态的就会间接长期维持着外部类的引用阻止被回收掉。资源对象未关闭资源性对象如Cursor、File、Socket应该在使用后及时关闭。未在finally中关闭会导致异常情况下资源对象未被释放的隐患。注册对象未反注册未反注册会导致观察者列表里维持着对象的引用阻止垃圾回收。Handler临时性内存泄露Handler通过发送Message与主线程交互Message发出之后是存储在MessageQueue中的有些Message也不是马上就被处理的。在Message中存在一个 target是Handler的一个引用如果Message在Queue中存在的时间越长就会导致Handler无法被回收。如果Handler是非静态的则会导致Activity或者Service不会被回收。由于AsyncTask内部也是Handler机制同样存在内存泄漏的风险。此种内存泄露一般是临时性的。最后我平时经常看如下不错的公众号的技术文章他们经常写一些面试经验、面试题解也整理了很多免费的系列资料和学习资料他们踏实而不浮躁、不贩卖焦虑。希望大家一起进步时刻准备着。2023年最新的Android面试大厂必考174题 附详细答案每逢招聘旺季都是程序员跳槽涨薪的好时机金三银四没赶上即将到来的金九银十可不能再错过了。获得想要获得更多机会让你的人生更上一步台阶就要充分准备。对于Android开发者而言掌握一定的复习方法和面试技巧会让你的复习事半功倍也能极大地提高通过前两轮技术面试的几率。以下这份最新版《Android面试大厂必考174题》包含各个大厂的高频面题及行业最新技术是由阿里P6的大佬花两月时间整理和完善而出资料内容全面、结构清晰非常适合想要求职/跳槽的伙伴内容概要内涵字节跳动、小米、oppo、美团、阿里巴巴、腾讯、360、华为、京东等一线互联网公司面试技术真题。参考解析字节跳动技术团队、郭霖、鸿洋、玉刚、掘金博主 xiangzhihong、Focusing、simpleeeeee、DevYK、简书博主 huangLearn、腾讯享学课堂、慕课网、极客时间…由于文章内容比较多篇幅有限资料已经被整理成了PDF文档有需要《Android面试大厂必考174题》完整文档的可以加微信 即可免费领取!《Android面试大厂必考174题》纲要1.SD卡2.android的数据存储方式3.BroadcastReceiver4.sp频繁操作会有什么后果?sp能存多少数据?5.dvm与jvm的区别6.ART7.Activity的生命周期8.Application能不能启动Activity9.Activity的状态都有哪些10.横竖屏切换时Activity的生命周期****Activity的状态都有哪些11.如何设置activity成窗口样式12.Activity的启动方式13.Service的生命周期14.IntentService15.Fragment和Activity的onCreateOptionsMenu16.Service的onStartCommand有几种返回值17.Service的onRebind什么情况下执行18.Handler防止内存泄露19.IntentFilter的匹配法则20.Fragment与Activity传值21.Fragment 生命周期22.Fragment的add和replace的区别 //replaceremove|append23.Fragment如何实现Activity栈的压栈和出栈24.什么情况下造成内存泄露25.图片过大导致OOM26.SoftReference跟WeakRefrence的区别27.dp与px28.设置布局为一半宽、高29.多分辨率支持的清单文件配置30.Android的事件分发机制31.ArrayList和LinkedList的区别32.LruCache33.什么是ANR如何规避34.描述Service的启动方式35.Android有哪几种布局36.HashMap、HashTable的区别 //从线程安全性、速度37.红黑树38.Handler Looper 工作原理39.Listview的几种adapter介绍40.如何在ListView间添加分割线41.LinkedHashMap 源码解读42.Drawable转Bitmap43.Layout_weight44.android:layout_gravity和android:gravity的区别45.如何重用布局46.使用merge减少include布局所造成的布局层次47.如何优化布局48.android:layout_gravity的使用规则49.TextView显示图像50.SpannableString的使用51.AutoCompleteTextView的使用52.在按钮上显示图像的方式有哪些53.如何动态改变Button的大小和位置54.如何让一个显示图像的按钮在不同状态下显示不同图像55.如何实现图像的半透明度56.HttpURLConnection57.ProgressBar58.AbsListView59.ListView,如何进行数据的增删改查60.ListView中如何显示数据库中的数据61.android TypedArray62.如何动态加载apk文件(未安装)的类63.Android ContentProvider64.如何设置Activity为程序启动的默认Activity65.启动Activity的几种方式66.Activity传递数据的方式67.如何将Activity设置成半透明的模态框68.如何接收广播69.如何获取短信内容70.如何拦截手机屏幕休眠和唤醒71.如何发送广播72.AIDL与Service73.如何读取联系人信息74.请描述Content Provider的uri由哪几部分组成75.介绍开发ContentProvider的步骤76.如何为ContentProvider添加访问权限77.AlertDialog78.如何自己控制对话框的关闭时机79.如何改变对话框的透明度80.如何自己控制Toast的显示和关闭81.如何使用Notification82.PendingIntent使用 //跨进程intent83.点击Notification触发Activity跳转84.如何自定义Notification的view85.然后为一个Activity添加选项菜单86.如何将上下文菜单绑定至可视组件View87.在单击菜单时如何能跳转进别的Activity88.菜单的回调函数有哪些89.如何使用SharedPreferences存取数据90.SharedPreferences //构造函数(string name,int mode)91.Android如何解析xml文件92.gson93.如何将table1表的数据和结构复制到table2上94.SQLite95.SQLiteOpenHelper.getReadableDatabase和SQLiteOpenHelper.getWritableDatabase将数据库文件放哪了96.然后将带数据的SQLite同apk一起发布97.Socket连接成功后怎么获取服务器的ip和域名98.BufferedInputStream mark //只有BufferedInputStream实现了mark方法99.如何打开手机中的蓝牙功能100.如何获取已绑定的蓝牙设备101.搜索蓝牙的过程中经过哪些状态102.隐式Intent103.如何采用广播监听去电和来电104.Android支持的电话状态105.Android如何控制接听和挂断电话106.请给出访问通话记录的Content Provider URI107.发送短信 //需要动态请求权限:android.permission.SEND_SMS108.ContactsContract109.VideoView 播放视频110.在工程路径下的res/drawable存放tree.png,如果将图片显示在View上111.调用Drawable进行绘图112.如何设置图像透明度113.如何旋转View114.Activity 切换115.Android116.动画117.属性动画 Animator118.定义字符串数组资源119.图层layer资源120.Clip图像资源121.ShapeDrawable122.如何统一设置多个View的android:textSize和android:textColor123.属性动画 Animator****123布局文件中的”“、””、”?”含义124.Android获取屏幕高度和宽度的办法125.AsyncTask126.Intent可传递的数据类型127.AlarmManager //闹钟128.HandlerThread129.自定义ViewGroup130.JVM的GC算法131.OkHttp132.ButterKnife //源码阅读133.Dalvik内存模型134.ART垃圾回收135.JVM 可达性分析中哪些对象可以作为根节点136.HashSet137.SSL中的对称加密和非对称加密138.Handler的内存泄露问题139.Android volatile关键字140.EventBus 源码阅读 //反射Class通常采用通配符 Class?或者Class? extends T141.String a“ abc”;String b“ abc”; 创建了几个对象 //栈存放引用变量 堆存在new出来的对象并且堆划分出一部分作为常量池142.java的单例创建143.Android进程优先级144.ThreadLocal 源码145.自定义View对象146.Android Override //重写147.Android Semaphore机制148.Android Lock同步149.ThreadPoolExecutor 线程池150.Android下载图片通过bitmap设置ImageView151.ImageView152.onSaveInstanceState //保存app数据,当系统因内存不足时而销毁app会得到调用153.ViewPagerPagerAdapterTabFragmentPagerAdapter154.Fragment在横竖屏切换时的数据保存155.DialogFragment //采用子类继承的方式进行使用,相比AlertDialog由FragmentManager负责自动重建156.SQLiteDatabase157.IntentFilter的匹配规则158.Android多进程159.Android Scroller160.Sqlite 连接操作161.Spinner162.RelativeLayout 源代码163.Message //static Message sPool,指向队列前头的可用Message对象164.ArrayDeque 源代码阅读165.RecyclerView166.LinearLayoutManager //RecyclerView的布局管理器167.GridLayoutManager168.RecyclerView 使用169.Binder170.ActivityThread //Android应用的主线程171.CountDownLatch 线程同步172.retrofit173.ClassLoader 类加载器174.RxJava由于文章内容比较多篇幅有限资料已经被整理成了PDF文档有需要《Android面试大厂必考174题》完整文档的可以加微信 即可免费领取!
返回列表