# 微信读书

  1. 自我介绍

  2. 实习经历简介,负责了哪些?

  3. MVP 模式

    模型层(Model):主要是获取数据功能,业务逻辑和实体模型。

    视图层(View):对应于 Activity 或 Fragment,负责视图的部分展示和业务逻辑用户交互。

    控制层(Presenter):负责完成 View 层与 Model 层之间的交互,通过 Presenter 获取 Model 的数据返回给 View,使得 View 与 Model 之间没有耦合。

  4. 网络请求框架有了解过内部的原理吗?

  5. 主线程怎么把数据交给子线程?Handler 和 AsyncTask?

  6. 除了约束布局,还有什么线性布局还是相对布局?它们之间的区别是什么?

    LinearLayout 是将多个 View 水平或者垂直排列;RelativeLayout 可以通过确定两个或多个组件的相对位置来摆放组件。

  7. 有没有遇到过一个布局中嵌套的布局非常多?会出现什么情况?

    Android 界面的布局太复杂,嵌套层次过深,会使得整个界面的测量、布局和绘制变得更复杂,对性能会造成影响。

  8. 有没有遇到过界面卡顿的情况吗?什么情况会造成界面卡顿?

  9. View 的绘制流程?执行的顺序?

  10. 有没有了解过一些事件传递机制?

  11. Java 虚拟机有哪几种内存?哪些内存是独立的,哪些是共享的?方法区分为哪些?

    方法区(线程共享):各个线程共享的一个区域,用于存储虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。运行时常量池是方法区的一部分,用于存放编译器生成的各种字面量和符号引用。

  12. HashMap 的原理?put方法发生冲突会怎么样?

  13. 垃圾回收机制?怎么判断什么时候会被回收?

  14. https 和 http 的区别?

  15. Socket 有了解吗?

    Socket 相关面试题

    Socket 是对 TCP/IP 协议簇的一种封装,是应用层与 TCP/IP 协议簇通信的中间软件抽象层。

    TCP 和 UDP 的区别:

    1. TCP 提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP 提供无连接的传输,通信前不需要建立连接;
    2. TCP 提供可靠的传输(有序、无差错、不丢失、不重复);UDP 提供不可靠的传输;
    3. TCP 是面向字节流的传输,所以能将信息分隔成组,并在接收端将其重组;UDP 是面向数据报的传输,没有分组开销;
    4. TCP 提供拥塞控制和流量控制机制;UDP 不提供拥塞控制和流量控制机制
  16. 长连接和短连接的区别?HTTPS 是长连接吗?

    在 HTTP/1.0 中,默认使用短连接。就是浏览器和服务器每进行一次 HTTP 操作,都会建立一次连接,任务结束后就会断开连接。

    在 HTTP/1.1 中。默认使用长连接。使用长连接的情况下,当某个网页打开完毕之后,客户端和服务器之间的 TCP 连接不会关闭,如果客户端再次访问该服务器上的网页,会使用上一次已经建立的连接。但是长连接不是永久的连接,它有一个保持时间

  17. Activity 生命周期?切换横竖屏的生命周期?

    切换横竖屏的生命周期:

    onPause\rightarrow onSaveInstanceState\rightarrow onStop\rightarrow onDestory\rightarrow onCreate\rightarrow onStart\rightarrow onRestoreInstanceState\rightarrow onResume

  18. 进程和线程的区别是什么?

  19. 介绍下快排,时间复杂度?

  20. 如何快速找到一个单链表的中间节点?

    快慢指针法。当快指针遍历完整个链表后,慢指针才遍历到一半的链表,则正好是单链表中间节点的位置。