前端面试(计算机网络、数据算法、Linux)

来源:互联网 发布:妙味云课堂js视频下载 编辑:程序博客网 时间:2024/04/25 20:00

1 HTTP常见状态码
200 OK 正常返回信息
302 Found 资源被暂时性转移
304 Not Modified 自从上次请求后,请求的网页未修改过。
304讲解
307 临时重定向
401 该请求需要用户验证
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
504 Gateway Timeout 网关超时

2 线程与进程的区别
一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
进程是资源分配的基本单位
线程是资源调度的基本单位

3 TCP与UDP
是否连接:面向连接 面向非连接
传输可靠性:可靠 不可靠
应用场合:传输大量数据 少量数据
速度:慢 快
面向:字节流 报文
最少包头长度:20字节 8字节

4 HTTP1.1新特性
持久连接:Connection: keep-alive。目前,对于同一个域名,大多数浏览器允许同时建立6个持久连接。
管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求。这样就进一步改进了HTTP协议的效率。
Content-Length 字段:一个TCP连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的。Content-length就是声明本次回应的数据长度。Content-Length: 3495。(效率不高)
分块传输编码:Transfer-Encoding: chunked。表明回应将由数量未定的数据块组成。每个非空的数据块之前,会有一个16进制的数值,表示这个块的长度。最后是一个大小为0的块,就表示本次回应的数据发送完了。例如:

HTTP/1.1 200 OKContent-Type: text/plainTransfer-Encoding: chunked25This is the data in the first chunk1Cand this is the second one3con8sequence0

其他:新增了许多动词方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。
另外,客户端请求的头信息新增了Host字段,用来指定服务器的域名。

5 哈夫曼编码
哈弗曼编码是一种无损二进制熵编码算法,其加权路径长度最小,字符串“alibaba”的二进制哈弗曼编码有_位(bit)
答案:13
一、对给定的n个权值{W1,W2,W3,…,Wi,…,Wn}构成n棵二叉树的初始集合F
二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。
三、从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。
四、重复二和三两步,直到集合F中只有一棵二叉树为止。

6 子网掩码中的主机数
子网掩码中所有0的位数就是主机的位数,但是要除去全0和全1
如:子网掩码是255.255.240.0。2的12次方,总共4096个,但是要除去全0和全1,最后只有4094个

7 常见端口号
HTTP的端口号是80
https的端口号是443
FTP的端口号是21
SMTP的端口号是25

8 排序
不稳定排序:快选堆希
稳 定排序:插冒归基

9 前端如何保证安全传输数据(并未找到合适答案)
可以用https协议。
采用非对称加密。
POST也不一定安全。

10 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
(1) 当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。
(2)浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
(3)一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。
(4)此时,Web 服务器提供资源服务,客户端开始下载资源。
请求返回后,便进入了我们关注的前端模块
简单来说,浏览器会解析 HTML 生成 DOM Tree,其次会根据 CSS 生成 CSS Rule Tree,而 javascript 又可以根据 DOM API 操作 DOM

11 n的阶乘
(1)递归

 public static int run(int n){  if (n == 1) {         return n;  }else {          return n * run( n - 1 );        } }

(2)循环

 public static int run(int n){  int res=1;  while(n>=2){     res=res*n;     n--;  }  return res; }

12 堆和栈
堆:程序员分配释放。
      堆是向高地址扩展的数据结构,是不连续的内存区域。
      堆获得的空间较大。
      堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.
栈:编译器自动分配释放。
      栈是向低地址扩展的数据结构,是一块连续的内存的区域。
      栈获得的空间较小。
      栈由系统自动分配,速度较快。但程序员是无法控制的。

13 jpg和png的区别

  1. png即可移植网络图形格式,也是一种位图文件存储格式,可以进行无损压缩,日常应用少于jpg。而jpg是最常见的图片格式了
  2. png占内存多,jpg占内存少
  3. png可无损压缩,jpg则牺牲了图片质量
  4. 在ps中png可为透明背景,而jpg显然是不行的。

png也有png-8,png-24,png-32。这是指存储位数。
png8只能使用 256色,可以设置 索引色透明Alpha透明。索引色透明只可以简单的指定一个像素点是不是透明(是或者不是)。而 Alpha 透明则可指定该像素点的透明的程度(透明度),如30%的透明度。
png24 是不支持透明度设定的,但其可用颜色比 png8 丰富的多。
png32不仅可以使用更多的颜色,而且还支持透明度设定。rgba(255,255,255,255)属于 PNG 系列中较常用的一种格式。
注:ie6对png32的兼容性不好。

14 请解释下列10个shell命令的用途
top、ps、mv、find、df、cat、chmod、chgrp、grep、wc
top:命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
ps:查看进程
mv:移动或者更改文件
find:在子目录中搜索匹配的文件
df:linux中df命令参数功能:检查文件系统的磁盘空间占用情况。
cat:把一个或多个文件内容显示到标准输出
chmod:改变文件属性
chgrp:改变用户分组
grep:在文件内进行搜索
wc:命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。

15 为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

16 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

17 https和http区别
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的,…
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
使用非对称加密算法进行对称加密算法协商过程。
https讲解

18 ping
我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

19
Windows默认换行符 \r\n
IP:网络层。TCP/UDP:传输层。HTTP/TALNET:应用层

20
HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

21
HTTP头部详解及keep-alive

22
HTTP长连接

23 缓存机制
Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。另一个问题是,到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。
所以HTTP 1.1 的版本,使用Cache-Control替代。
缓存机制
Etag缓存

24 负载均衡
那什么是负载均衡呢?负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

25 集群
简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。

0 0
原创粉丝点击