2019.9.6:今天看了下,挂了三面。
不过我觉得自己这么菜,已经走的很远了,觉得也不是很遗憾,哈哈~
1.介绍自己2min
2.介绍项目10min
面试官说,突出自己的亮点的时候需要多加强,然后需要加强码力,orz 跪
还有要突出答题重点(我感觉答不到重点很大程度上是不理解他的问题orz,阅读理解down)
3.提问环节:
1.tcp和ip的层次结构:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
然后ip在网络层,tcp在传输层,http在应用层。
2.为什么要分层处理,一层不好吗:
总的来说就是为了方便,分层思想其实就是模块化设计,七层就是七个模块,其中一个模块的更换不会影响到其他模块(例如IPv4向IPv6迁移)
3.https的加密原理:
https://blog.csdn.net/xincai/article/details/51954468
4.java的多态:,举出多态的例子
5.进程间通信,这个要讲出详细的实现,(一脸懵)
推荐网址:https://www.cnblogs.com/zgq0/p/8780893.html
管道:
借助了文件系统的文件结构和VFS的索引节点inode,使得两个文件结构指向同一个临时的VFS(虚拟文件系统)的索引节点,而这个索引节点又指向另一个物理页面。
信号量
消息队列
信号
6.虚拟内存的作用,有虚拟内存,软件会变得怎么样?
https://www.jianshu.com/p/baf3a13c47db
在系统中所有的进程之间是共享CPU和主存这些内存资源的。当进程数量变多时,所需要的内存资源就会相应的增加。可能会导致部分程序没有主存空间可用。此外,由于资源是共享的,那么就有可能导致某个进程不小心写了另一个进程所使用的内存,进而导致程序运行不符合正常逻辑。
为了更加有效的管理内存并少出错,现代系统提供了一种对主存的抽象的概念,叫做虚拟内存(VM)。
是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件间的完美交互,他为每个进程提供了一个大的、一致的和私有的地址空间。
虚拟内存提供了三个重要的能力: 缓存,内存管理,内存保护
将主存视为一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据
为每个进程提供了一致的地址空间,简化内存管理
保护了每个进程的地址空间不被其他进程破坏
7.需要内存的意义,如果内存和硬盘一样快,那还需要内存吗?
内存:RAM-随机存储器。
程序的运行是需要有一个场所的,因为对于CPU来说,甭管i7或者i8就那么几个寄存器,这一点特别能被忽略,对的,再高级的CPU确实只有那么几个寄存器,CPU的所有动作都是直接对寄存器操作的,都是要一个一个来的,就相当于总理,总理日理万机,即便要干n多事情,还是在他那个有限的大脑里一件一件的去做,所以为了运行大的和多的程序必然要有个临时的场地,而且还要保证跟CPU能够进行最快的通信,这里的内存就相当于总理的秘书处,存放将要运行的和正在运行的程序变量和各种参数,因为是总理的秘书处,所以跟总理的沟通也是最快的。
内存和硬盘不同,硬盘是用来存储数据的,不是为了运行程序的。程序运行时,是“秘书处”先把程序代码从硬盘中转移到内存中,然后等到总理(CPU)腾出手来,就从秘书处(内存)进行运行数据,当然了,总理(CPU)的思考过程是要在总理的大脑中(CPU内的计算单元和少量的寄存器)。
总结,内存就是一个临时存储器,运行程序时,有一个机构会先将程序代码和参数变量存放到内存中,然后CPU来读,接着执行,当然了,当关机后,里面的数据也就没有了。
————————————————
原文链接:https://blog.csdn.net/u012351051/article/details/80821128
8.面向对象和面向过程的编程的特点和区别
过程:性能更高,没有对象易于维护,复用,拓展。
对象:易于维护,易于复用,易于拓展,由于面些对象有继承,封装,多态性的特性,可以设计出低耦合的系统,使得系统更加灵活,易于维护,缺点是性能低。
9.多线程之间的同步:
其实就是读写分开和加锁即可。
10.你平时用多线程吗?
4.算法题*1
这个就要求说出算法,然后求解即可。
我就贴一下当时写的吧。。
思路:
分别以1,2,3,4,5,6……到数组大小为窗口,
对数组进行遍历,得到此窗口下整体最大的那个值,
然后对每个窗口下的最大值进行比较,得到最大值。