后端基础——Java和操作系统

1 - Java

1.1 - Java源码阅读

hashCode()原理

LinkedList 和 ArrayList 的实现

Java HashMap 工作原理及实现

HashMap HashTable ConcurrentHashMap 的区别

transient 关键字

自动拆箱,装箱

import java.io.*;
class test  
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 321;
        Integer f = 321;
        Long g = 3L;
        System.out.println(c == d); //true
        System.out.println(e == f); //false
        System.out.println(c == (a+b)); //true
        System.out.println(c.equals(a+b)); //true
        System.out.println(g == (a+b)); //true
        System.out.println(g.equals(a+b)); //false
        
    }
}

volatile - 并发可见性
transient - 序列化

jdk1.5 自动装箱,泛型,动态注解,枚举,变长参数,遍历循环,静态导入,并发包

反射

1.2 - 设计模式

为什么要写单例模式?
考察你对设计模式的理解,单例模式是唯一的可以仅仅用几十行代码完整实现的设计模式

你真的会写单例模式吗?

Spring 源码用到了哪些单例模式?(待补充

2 - 计算机系统

2.1 - 进程、线程和物理内存

进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的CPU个数的。传统系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序。无论是在单核还是多核系统中,一个CPU看上去都像是在并发执行多个进程,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上下文切换上下文指的是操作系统保存跟踪进程运行所需的所有状态信息。

一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和数据。由于网络服务器中对并行处理的需求,线程成为越来越重要的编程模型,因为多线程之间比多进程质检更容易共享数据,也因为线程一般来说都比进程更高效。

虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间。

2.2 - 栈内存和堆内存

什么是堆和栈,它们在哪儿?

2.3 - 同步、异步、阻塞、非阻塞

阻塞非阻塞同步异步

两种I/O多路复用模式:Reactor和Proactor

Linux IO模式及 select、poll、epoll详解

进程间通信

2.4、什么是协程,及于进程和线程比得优缺点

什么是协程,及于进程和线程比得优缺点

一个“蝇量级” C 语言协程库

  • 协程极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
  • 不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多

你可能感兴趣的:(后端基础——Java和操作系统)