面试题整理 -- 计算机基础知识篇
数据结构
队列、栈、链表、树、堆、图
栈和队列的相同和不同之处
栈:先进后出 java.util.Stack(类)
队列:先进先出 java.util.Queue(接口)
栈和队列的共同点是只允许在
端点处插入和删除元素;队列的操作与栈的操作类似,不同的是队列的删除是在
表的头部(front)进行.
栈通常采用的两种存储结构
一是顺序栈;二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元依次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置。由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。
ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此 数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据 慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存 储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半
各种树(平衡树,排序树,B树,B+树,R树,多路树,红黑树)
算法
实现链表排序的一种算法。说明为什么你会选择用这样的方法?
排序有哪几种方法?
排序的方法有:
插入排序(直接插入排序、希尔排序),
交换排序(冒泡排序、快速排序),
选择排序(直接选择排序、堆排序),
归并排序,
分配排序(箱排序、基数排序)
参考链接
各种排序的复杂度

Linux常用命令
cd,ls,grep,find,cp,mv,rm,ps,kill,file,tar,cat,tail
参考链接
参考链接2
计算机网络
TCP,UDP区别
基于连接与无连接;
对系统资源的要求(TCP较多,UDP少);
UDP程序结构较简单;
流模式与数据报模式 ;
TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
TCP(Transmission Control Protocol):为典型的传输大量数据或需要接收数据许可的应用程序提供连接定向和可靠的通信。
UDP(User Datagram Protocol):提供无连接的通信,并不保证数据包被发送到。典型的即时传输少量数据的应用程序使用UDP。应该说可靠的发送是应用程序的责任。

HTTP请求和响应的全过程
HTTP是一个应用层的协议,在这个层的协议,是一种网络交互需要遵守的一种协议规范。
连接:当输入一个请求时,首先建立一个socket连接,因为socket是通过ip和端口建立的,所以,之前则还有一个DNS解析过程。如把www.baidu.com变成一个ip,如果url不包含端口号,则会使用该协议的默认端口号,HTTP协议的默认端口号为80。
请求:连接成功后,开始向web服务器发送请求,这个请求一般是GET或POST请求。
应答:web服务器收到这个请求,进行处理。web服务器会把文件内容传送给响应的web浏览器。 包括:HTTP头信息,体信息。
关闭连接:当应答结束后,web浏览器与web服务器必须断开,以保证其它web浏览器能够与web服务器建立连接
osi七层模型以及tcp/ip四层模型(每一层主要功能,传输的内容,主要协议,主要应用)

◇ 网络接口层:在模型的最底层是网络接口层。本层负责将帧放入线路或从线路中取下帧。
◇ Internet层:Internet协议将数据包封装成Internet数据包并运行必要的路由算法。
◇ 传输层:传输协议在计算机之间提供通信会话。数据投递要求的方法决定了传输协议。
◇ 应用层:在模型的顶部是应用层。本层是应用程序进入网络的通道。在应用层有许多TCP/IP工具和服务,如:FTP、Telnet、SNMP、DNS等等。该层为网络应用程序提供了两个接口:Windows Sockets和NetBIOS。
TCP协议采用滑动窗口的方式控制数据流的传输,用三次握手了解对方情况。