面试常见的一些底层知识(三)

java基础

Posted by LY on October 9, 2018

欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏

csdn:雷园的csdn博客

个人博客:雷园的个人博客

简书:雷园的简书

今日头条:来自底层程序员的仰望

面试常见的一些底层知识点(三)

MVC与三层架构的关系

1.两者并无关系

2.三层是从整个应用框架角度的三层

3.MVC是应用程序(BS结构)的视图层划分出来不同的功能的几个模块

4.MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的HTML页面尽可能的于业务代码分离,把纯净的界面展示逻辑(用户界面)独立到一些文件中(view),一些和用户交互的程序逻辑(Controller)单独放在一些文件中。

MVC

内存空间中堆和栈的区别

1.栈区(stack):编译器自动分配释放,局部变量的值。速度快。

2.堆区(heap):程序员分配释放,如不释放,程序结束时有系统(OS)自动回收,分配方式类似于链表。速度较慢。

Java虚拟机(JVM)

1.抽象计算机:有自己完善的硬件架构、处理器、堆栈、寄存器。

2.多平台运行:分析并执行Java字节码。

3.从操作系统方面看:jvm是一个进程

访问网址的具体流程

1.将主机名通过DNS解析为IP地址。

2.建立TCP连接(三次握手)。

3.发送HTTP请求

4.返回,选择是否断开(keep-alive)

32位与64位的区别

代表处理器字长:每条指令可处理的最大长度。

64位的优点:可以进行更大范围的运算;支持更大的内存;

32位的优点:耗能小。但是处理速度慢。

三次握手

1.客户端发送带有SYN的TCP报文。

2.服务端回应客户端,带ACK标志和SYN标志,询问客户端是否准备就绪。

3.客户端回应服务端

四次挥手(连接终止协议)

注意:TCP是双工的,每个方向必须单独进行关闭。

1.客户端发送FIN

2.服务端发送ACK

3.服务端关闭客户端的连接

4.客户端发送ACK确认关闭

进程和线程的区别

1.进程:有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,进行进程切换时耗费资源大。

2.线程:一个进程中的不同执行路径,有自己的堆栈和局部变量。多进程比多线程的程序健壮性更好。

TCP/IP五层模型的协议

应用层—传输层—网络层—数据链路层—物理层