欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

笔试总结

发布时间:2025/3/20 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 笔试总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一,HTTP状态码常用的有哪些?

2开头的表示成功,主要是200,204,3开头的是重定向,主要是301,302,4开头的表示是客户端错误,主要是403,404,5开头表示服务器错误,主要是500,503

一、200状态码:
成功2××: 成功处理了请求的状态码。
1、200 :服务器已成功处理了请求并提供了请求的网页,服务器成功返回网页
2、204: 服务器成功处理了请求,但没有返回任何内容
二、300状态码:
重定向3×× :每次请求中使用重定向不要超过 5 次。
1、301: 请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。
2、302: 请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。
三、400状态码:
客户端错误4×× :表示请求可能出错,妨碍了服务器的处理。
1、403: 服务器拒绝请求
2、404: 请求页面不存在,服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。
四、500状态码:
服务器错误5×× :表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
1、500 :服务器内部遇到错误,无法完成请求。
2、503: 服务器目前无法使用(由于超载或停机维护)
状态参考:http://www.chaoji.com/features/httpstatus.aspx

http://tool.oschina.net/commons?type=5

二,细写TCP/IP模型和OSI模型,以及两种模型的参、层次映射

TCP/IP模型4层结构:应用层,传输层,网际层,网络接口层

应用层:负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层,应用层,表示层,会话层。

协议:FTP(文件传输协议)
           HTTP(超文本传输协议)
           DNS(域名服务器协议)
           SMTP(简单邮件传输协议)

传输层:负责提供可靠的传输服务,它提供了节点间的数据传送服务,对应OSI参考模型的第四层,传输层

协议:TCP(控制传输协议)
           UDP(用户数据报协议)

网际层:负责网络间的寻址、数据传输,对应OSI参考模型的第三层,网络层

协议:IP(网际协议)
           ICMP(网际控制消息协议)
          ARP(地址解析协议)
          RARP(反向地址解析协议)

网络接口层:负责实际数据的传输,对应OSI参考模型的下两层,数据链路层和物理层

协议:PPP(点对点协议)

OSI模型的7层结构:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

应用层:提供应用程序访问OSI环境的手段,有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

表示层:这一层根据不同的应用目的将数据处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。 数据的压缩、解压,加密、解密都发生在这一层

会话层:负责建立、维护、控制会话,区分不同的会话,以及提供单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务。我们平时所知的NFS,RPC,Windows等都工作在这一层

传输层:负责分割、组合数据,实现端到端的逻辑连接,TCP,UDP

网络层:负责管理网络地址,定位设备,决定路由。我们所熟知的IP地址和路由器就是工作在这一层。上层的数据段在这一层被分割,封装后叫做包(Packet),包有两种,一种叫做用户数据包(Data packets),是上层传下来的用户数据;另一种叫路由更新包(Route update packets),是直接由路由器发出来的,用来和其他路由器进行路由信息的交换。

数据链路层:负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等。我们所熟知的MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧(Frame)

物理层:就是实实在在的物理链路,负责将数据以比特流的方式发送、接收



三,Socket编程,分别写出客户端和服务器端代码

客户端:

import java.io.*;import java.net.*;public class TalkClient {public static void main(String args[]) {try{Socket socket=new Socket("127.0.0.1",10000);//向本机的10000端口发出客户请求BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));//由系统标准输入设备构造BufferedReader对象PrintWriter os=new PrintWriter(socket.getOutputStream());//由Socket对象得到输出流,并构造PrintWriter对象BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//由Socket对象得到输入流,并构造相应的BufferedReader对象String readline;readline=sin.readLine(); //从系统标准输入读入一字符串while(!readline.equals("bye")){//若从标准输入读入的字符串为 "bye"则停止循环os.println(readline);//将从系统标准输入读入的字符串输出到Serveros.flush();//刷新输出流,使Server马上收到该字符串System.out.println("Client:"+readline);//在系统标准输出上打印读入的字符串System.out.println("Server:"+is.readLine());//从Server读入一字符串,并打印到标准输出上readline=sin.readLine(); //从系统标准输入读入一字符串} //继续循环os.close(); //关闭Socket输出流is.close(); //关闭Socket输入流socket.close(); //关闭Socket}catch(Exception e) {System.out.println("Error"+e); //出错,则打印出错信息}} }服务器端:

import java.io.*;import java.net.*;import java.applet.Applet;public class TalkServer{public static void main(String args[]) {try{ServerSocket server=null;try{server=new ServerSocket(4700);//创建一个ServerSocket在端口4700监听客户请求}catch(Exception e) {System.out.println("can not listen to:"+e);        //出错,打印出错信息}Socket socket=null;try{socket=server.accept();//使用accept()阻塞等待客户请求,有客户//请求到来则产生一个Socket对象,并继续执行}catch(Exception e) {System.out.println("Error."+e);//出错,打印出错信息}String line;BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//由Socket对象得到输入流,并构造相应的BufferedReader对象PrintWriter os=newPrintWriter(socket.getOutputStream());//由Socket对象得到输出流,并构造PrintWriter对象BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));//由系统标准输入设备构造BufferedReader对象System.out.println("Client:"+is.readLine());//在标准输出上打印从客户端读入的字符串line=sin.readLine();//从标准输入读入一字符串while(!line.equals("bye")){//如果该字符串为 "bye",则停止循环os.println(line);//向客户端输出该字符串os.flush();//刷新输出流,使Client马上收到该字符串System.out.println("Server:"+line);//在系统标准输出上打印读入的字符串System.out.println("Client:"+is.readLine());//从Client读入一字符串,并打印到标准输出上line=sin.readLine();//从系统标准输入读入一字符串}  //继续循环os.close(); //关闭Socket输出流is.close(); //关闭Socket输入流socket.close(); //关闭Socketserver.close(); //关闭ServerSocket}catch(Exception e){System.out.println("Error:"+e);//出错,打印出错信息}}}
四,堆和栈的区别

堆:

1,存储的都是对象,每个对象都包含一个对应的class信息

2,JVM只有一个堆被所有的线程共享,堆中不存放基本类型和对象引用,只存放对象本身

栈:

1,每个线程都包含一个栈,栈中只保存基础数据和对象的引用。

2,每个栈中的数据都是私有的,其他栈不能方法

3,分为三个部分:基本变量区,执行上下文,操作指令区



总结

以上是生活随笔为你收集整理的笔试总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。