笔试总结

一,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);
          //将从系统标准输入读入的字符串输出到Server
          os.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(); //关闭Socket
        server.close(); //关闭ServerSocket
      }catch(Exception e){
        System.out.println("Error:"+e);
        //出错,打印出错信息
      }
    }
  }

四,堆和栈的区别

堆:

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

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

栈:

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

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

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

时间: 2024-11-29 13:00:13

笔试总结的相关文章

DP - tencent2016实习生笔试A

tencent2016实习生笔试A Problem's Link ---------------------------------------------------------------------------- Mean: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数. analyse: 对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的. 首先求s的反串rs,然后对s和rs求最长公共子序列,要删除的字

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N

2015腾讯笔试大题

今天做完腾讯的在线笔试,感觉自己弱爆了,选择题部分考得比较基础,但是考的面比较广,数据结构,计算机网络,算法常识,概率题,C,C++,都有.大题如下: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code).请编写一个函数,使用递归方法生成N位的格雷码,并且保证这个函数的健壮性. 2. 有下图的题解,请用C/C++代码来列出满足下图0-100内的所有答案. 3. 如图所示,系统中有三个进程Producer,Transmitter和Consumer.

腾讯、网易有道和阿里的笔试分享及自我总结

声明:本人Android移动开发岗 腾讯:考的很杂 选择题(25题不定项):考的包括: 编译原理两题, 计算机网络一两题(私网地址), C++若干, IOS开发一两题, 还有二叉树两三题,先后序遍历,求深度 jvm也有一题, 概率论一两题, JavaScript一题, 还有C语言(包括指针数组,数组指针,指针函数之类的)也挺多的 更多的是看程序求输出. 大题: 1,10亿QQ号用Set和Vector两个容器来删除奇数号 2,猴子摘香蕉,一次可以摘一根或两根,求摘50根有几种摘法(斐波那契数列)

58同城2015校招笔试、一面、二面经历

10.18 宣讲 58宣讲时间真是安排的晚...19.30开始,我6.30就到了..整整放了1个小时不重复的视频.....我听完他们CSO对行业和公司的介绍就走了.感觉58可能是o2o的下一个爆发点.感觉蛮有前景的.宣讲会也是和小米的宣讲差不多,过道上都挤满了人这种.我个人还是比较些向往去58的.个人感觉对于O2O,58算是赶了个早集..把最脏最累的活给做了..反而是美团,大众点评这种抓住了热点...当然,未来的大趋势也是O2O,就看58能不能赶上这趟快车了. 10.19 笔试 昨天的唯品会和中

笔试算法题(09):查找指定和值的两个数 &amp; 构造BST镜像树

出题:输入一个已经升序排序的数组和一个数字:要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n): 分析:对于升序排序的数组{-i-j-k-m--},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情况: 解题: 1 void FindSumFactor(int *array, int length, int sum) { 2 int left=0, right=length-1; 3 whil

笔试算法题(08):输出倒数第K个节点

出题:输入一个单向链表,要求输出链表中倒数第K个节点 分析:利用等差指针,指针A先行K步,然后指针B从链表头与A同步前进,当A到达链表尾时B指向的节点就是倒数第K个节点: 解题: 1 struct Node { 2 int v; 3 Node *next; 4 }; 5 Node* FindLastKth(Node *head, int k) { 6 if(head==NULL) { 7 printf("\nhead is NULL\n"); 8 exit(0); 9 } 10 Nod

笔试算法题(07):还原后序遍历数组 &amp; 半翻转英文句段

出题:输入一个整数数组,判断该数组是否符合一个二元查找树的后序遍历(给定整数数组,判定其是否满足某二元查找树的后序遍历): 分析:利用后序遍历对应到二元查找树的性质(序列最后一个元素必定是根节点,从左向右第一个比根节点大的元素开始直到根节点之前的所有元素必定在右子树,之前的所有元素必定在左子树): 解题: 1 bool PostOrderCheck(int *array, int i, int j) { 2 /** 3 * 如快速排序一样,解决小子文件 4 * */ 5 if(j-i+1 ==

C/C++笔试忍法帖04——C/C++语法特性篇

1.Heap与stack的差别 Heap是堆,stack是栈. Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放. Stack空间有限,Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符. 程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行. 2.In C++, what does "explicit" mean? what does "protected&

关于js的一个笔试编程题

这次笔试的时候,我遇见了一个笔试题目,我觉得这个题目,真的体现了数学之美,我的天,你自己抓破脑子,啊啊啊啊啊,我该怎么办,然后,你一看答案,有一种醍醐灌顶的感觉,然后拍一拍自己的小脑瓜,唉声叹气,哎,我自己怎么就没想到呢 题目如下 最小因子,只有2和3和5的数,称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.现在求出第n个丑数 首先我们把题目搞懂,这个丑数就是,他的最小的因子,只能是2,3,5,比如数字 8,可以分解为2*4,