欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    android网络编程面试题,Android面试题整理.docx

    • 资源ID:60481301       资源大小:42.16KB        全文页数:11页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    android网络编程面试题,Android面试题整理.docx

    android网络编程面试题,Android面试题整理Android方面:3、内存优化(内存泄漏、内存溢出),如何查找内存泄漏,如何优化内存泄露:是指程序在申请内存后,无法释放本应该被回收的内存。内存泄露的堆积就会导致内存溢出。内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用。查找内存泄露:1、使用AS自带的内存分析界面,可以查看内存使用情况(蓝色区域表示程序使用的内存,灰色区域表示空闲内存)内存泄露的原因以及解决方法:1、静态的上下文,比方static Context context,应该尽量防止静态上下文的使用;2、未取消注册或者监听,比方BrocastReceiver和EventBus需要在Activity的。nDestroy中取消注册;3、资源没有关闭或者释放,比方10、File流或者Cursor在操作完成后没有及时关闭;4、耗时任务或者属性动画没有取消,比方属性动画需要在Activity的onDestroy中取消;5、Web View造成内存泄露,Web View也需要在Activity的on Destroy中调用它的destroy。方法4、Activity启动模式及区别有以下四种启动模式:standard、 singleTopx singleTasks singlelnstanceo1、standard标准模式也是系统默认模式。在该模式下,每次启动一个Activity都会创立一个新的实例,不管这个实例是否已经存在。并且谁启动了这个Activity,那么这个A ctivity就运行在启动它的那个Activity所在的栈中。比方One Activity启动了T wo Activity(Two A ctivity 是标准模式),贝 IjT wo A ctivity 就会进入至 ij Ona A ctivity 所在的栈中。2、singleTop栈顶模式具体分为以下两种情况:2.1、 如果被启动的Activity已经存在且位于栈顶,那么该Activity就不会重建,而是调用其onNewlntentO方法重用该实例。2.2、 如果被启动的Activity已经存在但不是位于栈顶,那么就会重新创立该Activity的实例。3、singleTask栈内模式具体分为以下三种情况:3. k如果被启动的Activity所需的任务栈不存在,就会先创立该Activity所需的任务栈,然后再创立该A ctivity的实例并将它加入到任务栈中。3. 2、如果被启动的Activity所需的任务栈存在且该任务栈中不存在该Activity的实例,就会创立该Activity的实例并将它加入到任务栈中。3.3、 如果被启动的Activity所需的任务栈存在且该任务栈中存在该Activity的实例。那么有以下两种情况:3.4、 1、如果该Activity位于任务栈的栈顶,那么该Activity不会重建,系统会调用其on Ne wlntentO方法重用该实例;2、 EventBus3、3、Retrofit4、Ok Http5、Glide2、Ok Http的原理3、Picasso缓存机制算法方面:算法方面:1、冒泡排序假设无序数组为6, 1, 2, 7, 9, 3, 4, 5, 10, 8当i = 0时,进行第一次内部比拟1、1、第一次循环后的结果是1,6,2,7,9,3,4,5,10,82、第二次循环后的结果是1,2,6,7,9,3,4,5,10,83、第三次循环后的结果是1,2,6,7,9,3,4,5,10,84、第四次循环后的结果是1,2,6,9,3,4,5,10,85、第五次循环后的结果是1,2,6,9,4,5,10,86、第六次循环后的结果是",2,6,3,9,5,10,87、第七次循环后的结果是1,2,6,7,3,5,9,10,88、第八次循环后的结果是1,2,6,3,5,9,10,89、第九次循环后的结果是",2,6,3,4,5,9,8, 10=1时,进行第一次内部比拟=1时,进行第一次内部比拟intintnu m b er二 new intl 0 6,1, 2,7, 9,3,4,5, 10, 8;int te mp = 0;int te mp = 0;for (int i0; i < num b er.length - 1; i+) for (int j = 0; j < num b er.length - i - 1; j+) if (nu mberj > num b erj + 1) nu m b er j = numb erj + 1;nu m b erj + 1 - tern p;3、两个栈实现一个队列思路:因为队列是先进先出,而栈是先进后出Stack stack 1 = new StackO;Stack stack2 = new StackO;/入列public void push (int node) stack 1. push(node);:l/出列public int pop 0 if (stack2. sizeO <= 0) while (stack 1. sizeO > 0) stack2. push(stackl. popO);)return stack2. pop();)4、斐波那契数列斐波那契数列通项公式:f(l) = 1;f(2) = 1;f(n) = f(n - 1) + f(n - 2) ( n >= 3) public int Fibonacci (int n) if (n = 0) return 0;:lif (n = 1 11 n = 2) return 1;/ f(n)int a = 0;/ f(n - 1)int b = 1;/ f(n- 2)int c = 1;for Gnt i = 3; i <= n; i+) a = b + c;c = b;b = a;)return a;5、二叉树广度优先遍历6、二叉树根节点到叶节点的和网络编程:Https是在Http的基础上加了 SSL层,SSL层负责对传输的数据进行加密1、Http是明文传输,Https对传输的数据进行了加密2、Http使用80端口连接,Https使用443端口连接3、Https需要申请证书4、三次握手过程数据加密:1、加密方式1、MD5 : MD5是不可逆的加密算法,也就是无法解密,主要用于客户端的用户密码加密。2、SHA 13、AES4、RSA : RSA算法在客户端使用公钥加密,在服务端使用私钥解密。这样即使加密的公钥被泄露,没有私钥仍然无法解密。2、对称加密和非对称加密对称加密:加密解密用同一个密钥。非对称加密:公钥加密,私钥解密。例子:RSA数据结构:1、ArrayList和LinkedList的区别及各自的使用场景ArrayList内部采用数组的形式存储数据,所以更适合需要大量进行随机访问的场景(即改查操作);LinkedList内部采用双向链表的形式存储数据,所以更适合需要对集合进行元素的增加和删除的场景(即增删操作)。2、Hash Map的底层数据结构,及原理Hash Map是由数组+链表+红黑树组成的。根据key的hash值决定元素所在数组中的位置,数组里面保存的是由每个元素组成的单向链表,当链表的长度超过8时,会转换成红黑树的形式(提高元素的查找效率)。3、String、StringBuffers String Build er 的区另ij1、执行速度。执行速度的快慢为:String Builder > StringBuffer > Stringo2、线程平安。StringBuilder是线程不平安的,而StringBuffer是线程平安的。因为StringBuffer中很多方法带有 synchronized关键字,可以保证是线程平安的。所以在多线程情况下建议使用StringBuffer,确保线程平安,但是在单线程的情况下,建议使用StringBuilder,因为执行速度更快。3、Hash Map x HaseSetx HashTablex ConcurrentIIashM a p x LinkHash Map的区另1、Hase Map储存是无序不重复的,允许key和value为null位口果key为null,那么会在代码里面将null保存为0),是线程不平安的。2、Hash Set内部其实是用的Hash M ap作为数据的保存,储存的只是map的key,默认value为null厮以Hash Set也是无序不重复的,也允许key为null的,也是线程不平安的)3、HashTable储存无序不重复的,不允许key和value为null,通过synchronized关键字保证线程平安4、ConcurrentHash Map储存无序不重复的,不允许key和value为null,通过volatile关键字保证线程平安5、LinkHash Map继承至Hash Map,通过一个双向链表保存了元素的储存顺序(所以LinkHash Map也允许key为null的,也是线程不平安 的)。Kotlin方面:1、 const和val的区另ijconst只能修饰val,不能修饰var。const val的可见性是public final static,可以直接方法;val的可见性是private final static,并且val会生成get Nor m al Object。,通过方法调用。2、kotlin闭包3、run、apply、let、also、with的用法和区别Linux方面:K修改权限的命令ch m o d 7 7 7r表示read,读取权限,代表数字4w表示write,写入权限,代表数字2 x表示execute,执行权限,代表数字13. 3.2,如果该Activity不是位于任务栈的栈顶,那么该Activity不会重建,系统会调用其on Ne wintent0方法重用该实例并且清除任务栈中该Activity之上所有的Activity实例。4、singlelnstance单例模式该模式具备singleTask所有特性。具体分为以下两种情况:3.1、 如果被启动的Activity不存在,系统先会创立一个全新的任务栈,然后再创立该Activity实例并将它加入 到新的任务栈栈顶。3.2、 如果被启动的Activity已经存在,那么无论它位于哪个应用程序,哪个任务栈,系统都会把该Activity 所在的任务栈切换前台,从而使该Activity显示出来。注意:采用singlelnstance加载模式的Activity总是位于任务栈栈顶,并且该任务栈中只包含该Activity实例。1、提高进程的优先级2、利用广播拉活Activity6、Activity启动过程7、动画1、Android的动画可以分为三种:View动画、帧动画、属性动画。8、UI(同一张图片放在不同dpi中,加载内存的大小有何不同)9、Handler的原理,手写两个子线程Handler通信,loop wait时如何唤醒的Handler原理:Handler主要是由Loop er和Message Qu ene构建消息的处理。Loo per负责循环从Message Quene中读取消息, 如果有就交给Handler处理,如果没有就一直等待。Message Quene负责消息的插入和读取,里面维护了一个 单向链表,根据消息的执行时间排列(即最先被执行的在链表前面)。两个子线程Handl er通信public Handler m 11 andler;new Thread (ne w <unnableO ( 0 v erridepublic void run() Looper. prepareO;m H andler = new HandlerO Overridepublic void handleM e ssage( Message msg) super, handle Message (msg);Log. eCgybguohaoV'msg. obj = + msg. obj);Looper.loopO;). start0;new Thread(new RunnableO 0 v erride public void run() M e ssage msg = mHandler, obtain Me ssageO;m s g. obj=这是从第二个子线程过来的消息;m H andler. send M e ssage(msg);). start0;1 0s Context类11、热更新12、WebView优化,及H5的js调用W e b View的优化:Is第一次翻开WebView时间过长,可以在合适的时候创立一个全局的Web View供所有页面使用;2、设置Web View的文件缓存,加快加载速度。H5的js调用:1、首先设置允许与 JS 交互 web Settings, setjava Seri pt Enab led (true);2、添力口交互接口 m W e b View. addjavascriptlnterface(new JsCo m mu nicate 0, App);3、在JsCo m m u nicate类中通过注解J avascriptinterface定义具体的交互方法;4、js端通过window. App.方法名0调用对应的方法。13、性能优化1、应用启动速度优化,防止在自定义Application类中做过多耗时的操作;2、减少布局多层嵌套,防止GPU过度绘制,使用merge减少布局嵌套;3、尽量减少APK的大小,删除无用代码和资源,重复布局尽量采用include ;4、内存优化,及时释放内存,防止内存泄露;5、防止无用的网络请求,给用户造成流量的浪费。14、Bi nd er 机制Android Binder是用来做进程通信的,Android的各个应用以及系统服务都运行在独立的进程中,它们的通信都依赖 于 Binder。15、65536是怎么回事?如何解决表示方法数超过了 65536个解决方法:1、在工程的build gradle文件下defaultConfig闭包中配置 m ultiDexEnabled true2、在depend6ncies下添力依赖i mple m entation,co m. android, support: multidex: 1. 0.3、在自定义的 Application类中重写attach Base Context 方法,并且执行 M ultiDex. install (this)代码。 0 v erridepu blic void attachBase C o nt ext (Context base) super, attach Bas eC o nt ext (base);M ultiDex. install (this);!16、LruCache原理LruCache的全称是Least Recently Used,也就是最近最少使用算法。17、断点续传18、主线程Lopper为什么不会ANR因为Android是由事件驱动的,looper.loopO不断地接收事件、处理事件,每一个点击触摸或者说Activity的 生命周期都是运行在Looper.loopO的控制之下,如果Looper停止了,应用也就停止了。只能是某一个消息或者 说对消息的处理阻塞了 Looper.loopO ,而不是Looper.loop 0阻塞它。19、AIDLJava方面:1、线程平安、多线程通信、同步方式线程平安:在多线程环境下对共享资源的访问,保证此共享资源的一致性。线程平安问题多是由全局变量和静态变量引起的,当多个线程对共享数据只执行读操作,不执行写操作时,一般是线程平安的;当多个线程都执行写操作时,需要考虑线程同步来解决线程平安问题。多线程通信:1、全局变量2、Handler3、 AsyncTaskEventBus同步方式:1、使用synchronized关键字(同步方法和同步代码块)2、线程池的原理3、进程间通信方式1、Binder2、 Intent3、ContentProvider 4、 AIDL4、进程和线程区别一个程序至少一个进程,一个进程至少一个线程。进程是系统进行资源分配和调度的最小单位,比方分配内存。线程是程序执行的最小单位,可以与同属一个进程的其他的线程共享该进程所拥有的全部资源。5、sleep和wait区别1、sleep是Thread类的方法,wait是object类的方法;2、sleep方法没有释放锁所以不能调用里面的同步方法。而wait方法释放了锁,使得其他线程可以调用里面的同步方法。4、sleep必须捕获异常,而wait不需要捕获异常6、堆和栈的区别1、堆中存储的是对象2、栈中存储的是局部变量final可以修饰类、方法、变量(包括成员变量和局部变量)1、final修饰类,表示这个类不能被继承,并且该类中所有的成员方法会被隐式的指定为final方法;2、final修饰方法,该方法在子类中不能重写,只能继承;3、final修饰变量,如果是基本数据类型的变量,那么其数值一旦在初始化之后便不能更改;如果是引用类型的变量,那么在对其初始化之后便不能再让其指向另一个对象8、简单描述封装、继承、多态1、封装:将事物的属性和实现细节隐藏起来,只对外提供访问和修改接口(例如set和get方法);2、继承:当多个类具有相同的属性和方法时,可以将相同局部抽取出来放到一个类中作为父类,其他的类继承这个父类。3、多态:方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。9、二二和equals的区另I1、对于基本数据类型比拟的是它们的值是否相等;2、对于对象比拟的是它们是否是同一个对象(即内存地址是否相同);equals :1、equals比拟的是值是否相等10、java基本数据类型和区别基本数据类型:1、byte : Java中最小的数据类型,1个字节,取值范围281 2 7,默认值02、short :短整型,2个字节,取值范围-3276832767,默认值03、int:整型,4个字节,取值范围-2147483648、2 1 47483647,默认值04、long:长整型,在内存中占64位,即8个字节-2飞32飞3-1,默认值0L5、float:浮点型,4个字节,与double的区别在于float类型有效小数点只有6、7位,默认值06、double :双精度浮点型,8个字节,默认值07、char:字符型,2个字节,取值范围065535,默认值为空8、boolean :布尔类型,占1个字节,用于判断真或假,默认值false引用数据类型:1、类、接口类型、数组类型、枚举类型、注解类型。区别:1、基本数据类型在被创立时,在栈上给其划分一块内存,将数值直接存储在栈上。2、引用数据类型在被创立时,首先要在栈上给其弓I用分配一块内存,而具体对象存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。11、如何实现一个死锁1 2、synchronized的实现原理Java内存模型三大性质:可见性、原子性和有序性。1、可见性:是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的,volatile修饰的变量不允许线程内部缓存和重排序,即直接修改内存,所以对其他线程是可见的。但是这里需要注意一个问题,volatile只能让被它修饰内容具有可见性,但不能保证它具有原子性。2、原子性:原子是世界上的最小单位,具有不可分割性。3、有序性:Java语言提供了 volatile和synchronized两个关键字来保证线程之间操作的有序性,volatile是因为其本身包含“禁止指令重排序”的语义,synchronized是由“一个变量在同一个时刻只允许一条线程对其进行lock操作”这条规那么获得的,此规那么决定了持有同一个对象锁的两个同步块只能串行执行。volatile变量用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会 注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器 或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。声明变量是volatile的,JVM保证了每次读变量都从内存中读,跳过CPU cache这一步。14、子类重写父类方法,返回值和参数有什么要求1、方法名和参数类型及个数都不可以修改2、可以讲方法的权限修饰符改为更宽松的,比方父类中的方法是protected的,那么子类中的方法可以是public的3、当返回值为类类型时,重写的方法可以修改返回值类型,但必须是父类方法返回值的子类;要么就不修改,与父 类返回值类型相同框架搭建:1、MVC和MVP的区别1、MVC中无法区分Activity到底是V还是C,因为它即承当了界面的显示,又负责一局部逻辑的处理;2、MVP中V和M不存在直接联系,而是通过P来交互。P和V以及P和M之间通过接口来交互,从而降低了代码的耦合度。2、手写MVP框架(用户登录)public class LoginA ctivity extends AppCo m pat Activity imple ments LoginView private LoginPresenter mLo gin Present er; 0 v errideprotected void onCreate(Bundle savedlnstanceState) super, on Create (save dlnstance St ate);set Content View (R. layout activity_ main);m L o gin Presenter = new LoginPresenter(thi s);/请求登录m LoginPresenter.loginCl88xxxx6 1 1 0,“123 4 5 6");) Overridepublic void loginSuccess(Login Model model) Overridepublic void loginFailGnt code, int msg) )public interface Login Vie w() void loginSuccess(Login M o del model);void loginFail(int code, int msg);!public class LoginPresenter public LoginView m View;pu blic Lo ginPr esent er (Login Vie w vi ew) this mView = view;)public void login(String phone, String password) Net Client getlnstance0.1ogin(ne w BaseCallbackO Overridepublic void onSuccess(LoginModel mod el) m Vie w. loginSuccess( mo del); 0 v erridepu blic void onF ail (in t code, int msg) m Vie w. loginSuccess(code, msg);)()!)MVVM框架A n droid的M V V M框架主要是通过DataBinding这个库实现设计模式:1、用到的设计模式都有哪些常用的设计模式有:单例模式、Builder.工厂模式、策略模式、观察者模式、等等2、实现单例模式都有哪几种方式有以下几种方法:饿汉、懒汉、Double checked locking.静态内部类饿汉模式public class Singleton private static final Singleton mlnstance = new Singleton();private Singleton0 )public static Singleton getlnstance0 return mlnstacen;) !懒汉模式public class Singleton private static Singleton mlnstance;private Singleton() )public static synchronized Singleton getlnstanceO if (mlnstance 二二 null) mlnstance = new SingletonO;return mlnstacen;3、手写单例模式双重加锁public class Singletonprivate volatile static Singleton mlnstance = null;private Singleton() !public static Singleton getlnsatnceO if (mlnstance = null)synchronized (Singleton, class) if(mlnstance 二二 null)mlnstance = new SingletonO;return mlnstance;)静态内部类public class Singletonprivate Singleton () )public static Singleton getlnsatnceO return SingletonHolder, mlnstance;)private static class SingletonHolderprivate static final Singleton mlnstance = new SingletonO;)4、装饰模式三方框架:1、用到的三方框架都有哪些 1、Butterknife

    注意事项

    本文(android网络编程面试题,Android面试题整理.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开