Java基础知识+Java虚拟机

2020面经JAVA_Android客户端_研发岗面试基础知识点

2020-03-09  本文已影响0人  名字都被你们取了我不生气

(仅适合面试前复习回顾知识点)

一:JAVA基础

1.四大特性及其含义

2.JVM和JVM 内存模型

3.JVM 内存结构

私有数据区包含:

共享数据区包含:

1.Java堆:

2.方法区

4.JVM之GC

5.类加载过程,类加载时机,类加载器,双亲委托模型

类加载过程

  1. 加载:获取类的二进制字节流;生成方法区的运行时存储结构;在内存中生成 Class 对象;
  2. 验证:确保该 Class 字节流符合虚拟机要求;
  3. 准备:初始化静态变量;
  4. 解析:将常量池的符号引用替换为直接引用;
  5. 初始化:执行静态块代码、类变量赋值;

类加载时机

  1. 实例化对象
  2. 调用类的静态方法
  3. 调用类的静态变量(放入常量池的常量除外)

类加载器

  1. 引导类加载器 - 没有父类加载器
  2. 拓展类加载器 - 继承自引导类加载器
  3. 系统类加载器 - 继承自拓展类加载器

双亲委托模型

6.Java中堆和栈

7.重载和重写

8.volatile 关键字

9.内部类

内部类就是定义在另外一个类里面的类。它隐藏在外部类中,封装性更强,不允许除外部类外的其他类访问它;但它可直接访问外部类的成员。

10.Java集合

11.HashMap是什么,怎么扩容,put,get元素的过程

12.各种锁

二:计算机网络

1.网络协议模型

2.TCP 和 UDP 区别

3.TCP如何实现可靠性传输,udp如何实现可靠性传输

4.三次握手,四次挥手

三次握手:

四次挥手:

5.MAC和IP地址

6.拥塞控制

对网络中的路由和链路传输进行速度限制,避免网络过载,包含四个过程:慢开始、拥塞避免、快重传和快恢复


在这里插入图片描述

7.从输入网址到获得页面的过程

  1. 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
  2. 解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接
  3. 浏览器发出读取文件的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
  4. 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器
  5. 释放TCP连接,若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求
  6. 客户端将服务器响应的html文本解析并显示

三:操作系统

1.进程和线程的区别

2.死锁的产生和避免

3.临界区

4.进程间的通信方式

5.线程间的通信机制

6.进程间同步与互斥的区别,线程同步的方式

四.Android

1.Android四大组件

2.Activity的生命周期

3.Activity 的四种启动模式、应用场景

4.两个Activity 之间跳转

5.启动其他应用的Activity

6.ActivityManagerService

7.Service的生命周期

8.Service的两种启动方式

9.IntentService与普通Service的区别

10.Service保活

11.Broadcast的分类

12.Broadcast的两种注册形式

13.ContentProvider(内容提供商)

14.View工作原理

ViewRoot 的 performTraversals 方法调用触发开始 View 的绘制,然后会依次调用

14.Android中的事件传递机制

15.ANR问题

ANR(Application Not responding)。Android中,主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR。

ANR异常是经常遇到的问题,主要的解决办法最常用的就是不要在主线程中做耗时的操作,而应放在子线程中来实现

16.子线程禁止访问UI

为什么不加锁?

17.Handler的实现原理

new Thread(new Runnable() {
            @Override
            public void run() {
                Looper.prepare();//为子线程创建Looper  
                new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    //子线程消息处理
                }
            };
                Looper.loop(); 
            }
        }).start();

18.ThreadLocal(本地线程)

19.线程池

通过ThreadPoolExecutor并通过一系列参数来配置各种各样的线程池,线程池可以减少创建和销毁线程的次数,从而减少系统资源的消耗

当一个任务提交到线程池时

线程池的好处:

线程池分类

20内存泄漏和内存溢出

21.内存泄漏,java是否存在内存泄漏

内存泄漏(Memory Leak)是指程序在申请内存后,无法释放已申请的内存空间。

22.Android中线程

23.冷启动与热启动

24.Android 系统启动流程

困了,未完待续。。。

上一篇 下一篇

猜你喜欢

热点阅读