Android开发校招总结(三)—— 面经总结

下面总结在秋招面试过程中被问到的一些常见问题,主要包括Java,Android,数据结构与算法,计算机网络和设计模式等内容。

Java的话主要包括Java基础、Java集合、Java多线程和JVM等相关内容;Android的话主要包括Android四大组件相关、Android异步任务和消息机制、Android IPC、Android UI绘制相关、Android性能调优相关、Android数据存储和Android综合技术等内容;数据结构与算法的话在面试中更多的是以手撕代码的形式(个人觉得剑指Offer+面试必刷TOP101足以,如果有时间精力可以刷TOP202),但也问到了个别的可以口述的问题;计算机网络在Android面试中问的也比较多;设计模式的话在面试中更多的是问项目中用到了哪些设计模式,或者Android中或一些三方开源库中用到了哪些设计模式;操作系统和数据库在面试中偶尔会问到,这里就不做总结了;Kotlin在简历中如果有相关的,也会被问到一些,这里同样也不做总结了。

Java

Java基础

  • 首次加载和创建一个类时,变量初始化的顺序是怎么样的?
  • String、StringBuffer和StringBuilder三者的区别?
  • 抽象类与接口的区别?
  • 重载和重写的区别?
  • Java的异常分类?(谈谈Error和Exception的区别?)
  • Java的异常处理流程?try,catch,finally的return问题,流程是什么?
  • Java有哪四种访问控制类型,它们有什么区别?(Java里的访问修饰符有哪些?)
  • 面向对象三大特性?
  • 分别讲讲final、static和synchronized可以修饰什么,以及修饰后的作用?
  • “equals"与”==“、”hashCode“的区别和使用场景?
  • Java中深拷贝与浅拷贝的区别?
  • Java中IO流分为几种?它们之间有什么区别?
  • BIO,NIO,AIO有什么区别?
  • 什么是反射机制?反射机制的应用场景有哪些?
  • 反射为什么性能低?
  • 说说你对Java注解的理解?
  • 注解的类型有哪些?
  • 注解的解析方法有哪几种?
  • 静态内部类与非静态内部类的区别及使用场景?
  • 内部类为什么可以访问外部类对象?

Java集合

  • ArrayList和Array(数组)的区别?
  • 谈谈ArrayList和LinkedList的区别?
  • 说一说ArrayList的扩容机制?
  • HashMap的实现原理?
  • 谈谈对于ConcurrentHashMap的理解?

Java多线程

  • 什么是进程和线程?(进程和线程的区别?)
  • Java中使用多线程的方式有哪些?
  • 什么是线程池?它的优点是什么?如何创建一个线程池?线程池参数含义?有哪几种线程池?
  • 谈一谈线程sleep()和wait()方法的区别?
  • 如何实现多线程中的同步?
  • 如何保证线程安全?
  • 谈谈线程死锁,形成死锁的条件,如何有效的避免线程死锁?
  • synchronized关键字原理?
  • 了解锁的升级过程吗?
  • synchronized 修饰在static方法和非static方法的区别?
  • 生产者消费者模型?
  • volatile关键字的作用是什么?
  • 在new对象的过程是不是一个原子操作,不是的话有哪几步?为什么要用volatile关键字?
  • 说一下synchronized和volatile关键字的区别?
  • synchronized和Lock有什么区别?
  • 谈谈ThreadLocal用法和原理?(ThreadLocal是如何存储的?)
  • 乐观锁如何实现?缺点有哪些?
  • ReentrantLock是什么?
  • synchronized和ReentrantLock的区别?
  • 请你说一下对于AQS原理的理解?
  • JMM是什么?有什么作用?
  • 说说JMM对内存的划分?

JVM

  • 介绍下JVM内存区域(运行时数据区)?
  • 说一下堆和栈的区别?
  • Java对象的创建过程?
  • 一个对象在内存中包含几个部分?
  • 如何判断对象死亡?(如何判断一个对象是否可以回收?)
  • 简单的介绍下强引用、软引用、弱引用、虚引用?
  • 垃圾收集有哪些算法?
  • 说一下类加载的执行过程?
  • 什么是双亲委派模型?为什么要使用双亲委派模型?

Android

Android四大组件相关

  • Android四大组件作用及应用场景?
  • 说下Activity的生命周期?
  • Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是Dialog呢?
  • 优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
  • Activity的启动模式及应用场景?
  • 谈一谈 startService 和 bindService 方法的区别?
  • IntentService和普通的Service有什么区别?
  • Service如何和Activity进行通信?
  • Android广播机制?
  • 广播的两种注册形式?区别在哪?

Android异步任务和消息机制

  • 谈谈异步消息处理机制Hander?作用?有哪些要素?流程是怎样的?
  • 为什么系统不建议在子线程访问UI?
  • 一个Thread可以有几个Looper?几个Handler?
  • 如何将一个Thread线程变成Looper线程?Looper线程有哪些特点?
  • 可以在子线程直接new一个Handler吗?那该怎么做?
  • Message可以如何创建?哪种效果更好,为什么?
  • 这里的ThreadLocal有什么作用?
  • Handler的sendMessage和post的区别?
  • 延时消息的原理?
  • Looper如何将消息队列中的消息分发给Handler?会把同一个消息给多个Handler吗?
  • Handler引起的内存泄露原因及解决方案?
  • Handler、Thread和HandlerThread的差别?
  • 主线程中的Looper死循环为何没有阻塞主线程?
  • 在发送 delay 10s 的消息, 假设消息队列中, 目前只有这一个消息; 那么为什么在这 10s 内, UI是可操作的, 或者列表页是可滑动的, 或者动画还是可以执行的?
  • Android IPC

  • Android进程间的通信方式?
  • 是否了解AIDL?

Android UI绘制相关

  • Android有哪些布局类型?
  • 你认为 LinearLayout、FrameLayout 和 RelativeLayout 哪个效率高, 为什么?
  • 谈一谈View的事件分发机制?
  • 如何解决View的滑动冲突?
  • 请介绍View的三大绘制流程?
  • MeasureSpec是什么?有什么作用?
  • 说一下Android中UI的刷新机制?
  • RecyclerView的缓存机制?

Android 性能调优相关

  • 什么是ANR?什么情况会出现ANR?如何避免?
  • 什么是内存泄露?内存泄露的情况有哪些?有哪些检测方法?

Android 数据存储

  • Android中提供哪些数据持久存储的方法?
  • SharedPreferences是线程安全的吗?SharedPreferences的apply和commit的区别?
  • 什么是序列化?Serializable接口和Parcelable接口的区别?

Android综合技术

  • 请谈谈你对MVC、MVP、MVVM的理解?
  • 了解Android签名机制吗?
  • JVM和Android虚拟机有什么区别?

数据结构与算法

  • 基本有序的数组用什么排序算法最好?
  • 快速排序原理?时间复杂度是什么样的?什么情况下是最坏时间复杂度?
  • 什么是红黑树?与平衡二叉树有什么区别?为什么要用红黑树?

计算机网络

  • 计算机网络七层模型和四层模型都有哪些?每一层的作用是什么?分别有哪些协议?
  • 在地址栏输入URL会经过哪些过程?
  • HTTP 常见的状态码有哪些?
  • GET和POST有什么区别?
  • HTTP 与 HTTPS 有哪些区别?
  • HTTPS解决了HTTP的哪些问题?(HTTPS是如何保证安全的?)
  • 加密算法有哪些类型?
  • HTTPS通信的过程?
  • HTTP1.1和HTTP2.0的区别?
  • Cookie是什么?
  • TCP和UDP的区别?
  • 谈谈TCP为什么要三次握手?为什么要四次挥手?
  • TCP 如何保证传输的可靠性?
  • 拥塞控制和流量控制都是什么,两者的区别?

设计模式

  • 说说项目中用到的设计模式?
  • 说说Android中用到设计模式的例子?
  • 单例模式有哪些实现方法?
  • 谈谈了解的设计模式原则?
  • 静态代理和动态代理的区别,什么场景使用?
全部评论

相关推荐

迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
评论
6
43
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务