1. 网络
    1. IP地址分类
    2. 常见网络协议
    3. HTTP状态码
  2. 算法
    1. 排序问题总结
  3. git
    1. git和svn的区别
    2. git常用命令
    3. git暂存区,工作区等

一、网络

1. IP地址分类:

  • IP网络使用32位地址,以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址IP地址=主机地址+子网地址+主机地址
  • 最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。 
    • A类:由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。 
      A类地址的第一组数字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。
    • B类:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
    • C类:一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
    • D类多用于多点广播:D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
    • E类:以“llll0”开始,为将来使用保留。
    • 全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
    • 在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
      • A类地址:10.0.0.0~10.255.255.255
      • B类地址:172.16.0.0~172.31.255.255
      • C类地址:192.168.0.0~192.168.255.255

  参考:IP地址的分类——a,b,c 类是如何划分的

2. 常见网络协议

  • 应用层常用协议:文件传输,电子邮件,文件服务,虚拟终端

    • DNS:域名系统
    • FTP:文件传输协议
    • telnet远程终端协议
    • HTTP:超文本传送协议(使用面向连接的TCP作为运输层协议,保证了数据的可靠传输)
    • 电子邮件协议SMTP
    • POP3:邮件读取协议
    • SNMP:简单网络管理协议
    • WebSocket:是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。
  • 传输层: 提供端对端的接口
    • TCP:

      • 提供IP下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。
      • 支持的应用协议主要有:Telnet、FTP、SMTP等
    • UDP:
      • 不为IP提供可靠性、流控或差错恢复功能,是非面向连接,不可靠的传输。
      • 支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等.
  • 网络层:为数据包选择路由
    • IP
    • ICMP
    • RIP
    • OSPF
    • BGP
    • IGMP
  • 数据链路层:传输有地址的帧以及错误检测功能
    • SLIP
    • CSLIP
    • PPP
    • ARP
    • RARP
    • MTU
  • 物理层:以二进制数据形式在物理媒体上传输数据
    • ISO2110
    • IEEE802
    • IEEE802.2

 参考:应用层常用协议

3. HTTP状态码:

  • 1XX表示消息:表示请求已被接受,需要继续处理。
    这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。

    100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
    101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
  • 2XX表示:成功
    200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果针对您的 robots.txt 文件显示此状态码,则表示 Googlebot 已成功检索到该文件。
    201(已创建) 请求成功并且服务器创建了新的资源。
    202(已接受) 服务器已接受请求,但尚未处理。
    203(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
    204(无内容) 服务器成功处理了请求,但没有返回任何内容。
    205(重置内容) 服务器成功处理了请求,但没有返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如,清除表单内容以输入新内容)。
    206(部分内容) 服务器成功处理了部分 GET 请求。
  • 3XX表示:重定向
    300(多种选择) 针对请求,服务器可执行多种操作。服务器可根据请求者 (user-agent) 选择一项操作,或提供操作列表供请求者选择。
    301(永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。
    302(临时移动) 服务器目前从不同位置的网页响应请求,但申请人应当继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但不应使用此代码来告诉 Googlebot 页面或网站已经移动,因为 Googlebot 要继续抓取原来的位置并编制索引。
    303(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。对于除 HEAD 之外的所有请求,服务器会自动转到其他位置。
    304(未修改)

    自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

    如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。由于服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,因此可节省带宽和开销。

    305(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应当使用代理。
    307(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应当继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 <a href=answer.py?answer=>301</a> 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为 Googlebot 会继续抓取原有位置并编制索引。
  • 4XX表示:客户端错误
    400(错误请求) 服务器不理解请求的语法。
    401(身份验证错误) 此页要求授权。您可能不希望将此网页纳入索引。如果您的 Sitemap 中列出该网页,您可以将其删除。但如果您将其保留在您的 Sitemap 中,我们就不会抓取或索引该网页(尽管该网页将继续保持错误状态在此处列出)。如果我们将其作为搜索抓取的一部分抓取,您可以在我们的网站管理员信息中查阅其原因。
    403(禁止) 服务器拒绝请求。如果您在 Googlebot 尝试抓取您网站上的有效网页时看到此状态码(可以在 Google 网站管理员工具<strong>诊断</strong>下的<strong>网络抓取< /strong>页面上看到此信息),可能是您的服务器或主机拒绝 Googlebot 访问。
    404(未找到)

    服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。

    如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具"诊断"标签的 robots.txt 页上看到此状态码,那么这是正确的状态码。但是,如果您有 robots.txt 文件而又看到此状态码,则说明您的 robots.txt 文件可能命名错误或位于错误的位置(该文件应当位于顶级域,名为 robots.txt)。

    如果对于 Googlebot 尝试抓取的网址看到此状态码(在"诊断"标签的 HTTP 错误页面上),则表示 Googlebot 追踪的可能是另一个页面的无效链接(是旧链接或输入有误的链接)。

    405(方法禁用)

    禁用请求中指定的方法。

    406(不接受) 无法使用请求的内容特性响应请求的网页。
    407(需要代理授权) 此状态码与 401 类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
    408(请求超时) 服务器等候请求时发生超时。
    409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。
    410(已删除) 请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久删除,您应当使用 301 指定资源的新位置。
    411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
    412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
    413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
    414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
    415(不支持的媒体类型) 请求的格式不受请求页面的支持。
    416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态码。
    417(未满足期望值) 服务器未满足"期望"请求标头字段的要求。
  • 5XX表示:服务器错误
    500(服务器内部错误) 服务器遇到错误,无法完成请求。
    501(尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时则会返回此代码。
    502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    503(服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
    504(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

  参考:HTTP 状态码

二、算法

1. 排序问题总结

参考:

稳定排序和不稳定排序

比较排序算法

三、git

1. git和svn的区别?

  1. git是分布式的,svn不是,是集中式的。GIT跟SVN一样有自己的 集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看历史版本记录,创建项 目分支等。也就是说,git和其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提及,合并,也可以不用联网在本地提及。
  2. GIT把内容按元数据方式存储,而SVN是按文件。.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
  3. git分支和svn分支的不同
    1. 分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。在SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。而 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。
    2. 然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
  4. GIT没有一个全局的版本号,而SVN有:
  5. GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
  6. Git下载下来后,在本地不必联网就可以看到所有的log,很方便学习,SVN却需要联网
  7. 版本库:

    1. SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。

    2. 而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库!

2. git常用命令

git init      #把当前目录变成git可以管理的仓库
git add "read.me" #git add + 要提交的文件名. 把文件添加到仓库
git commit -m "要提交的说明"
git status # 查看仓库当前状态
git diff #查看修改内容
git log #查看提及日志
git reset --hard HEAD^ #回退到HEAD开头的版本库
git reflog #查看命令历史,以便确定要回退到哪个版本库 git checkout -- <filename>      #把文件在工作区的修改全部撤销。即回退到最近一次git commit或git add时状态
git reset HEAD <filename>       #把暂存区的修改回退到工作区。用HEAD表示最新的版本
#如果已经提交了不合适的修改到版本库,想要撤销本次提交,只要还没有推送到远程库,可用版本回退 git rm <filename>      #删除文件
git checkout -- <filename>    #恢复 git remote add origin git@github.com:xzhyj93/reposName.git    #本地仓库关联远程库
git push -u origin master      #把本地库master分支下的内容推送到远程库。第一次使用参数-u表示把本地的master分支和远程的master分支关联起来
git push origin master git clone git@github.com:xzhyj93/respoName.git    #从远程库克隆。
            #git支持多种协议,git://使用ssh,也可以使用https git checkout -b dev    #创建并切换到分支dev,相当于下面两条命令
git branch dev       #创建分支dev
git checkout dev      #切换到分支dev
git branch          #查看当前分支。会列出所有分支,当前分支前面会标一个*号
git merge dev        #把dev分支的工作成果合并到master分支上
git branch -d dev      # 删除dev分支 git stach           #保存当前工作现场
git stash list       #查看stash
git stash apply       #回复工作现场(并不删除)
git stash drop       #删除工作现场
git stash pop       #恢复并删除stash
git stash apply stash@{0}  #恢复指定stash git remote         #查看远程库信息
git remote -v       # 查看更详细的远程库信息
#远程多人协作
git push origin brach-name        #从本地推送失败
git pull                   #如果推送失败,使用这个命令抓取远程的新提交。如果有冲突,要先处理冲突
git checkout -b dev origin/dev      #创建远程origin的dev分支到本地
git branch --set-upstream branch-name origin/branch-name    # 建立本地分支和远程分支的关联 git tag v1.0      #打标签
git tag         #查看所有标签
git show <tagname>    #看到说明文字,查看标签信息
git tag -d <tagname>   #删除标签

3. 关于git的暂存区和工作区

  1. 工作区(Working Directory):
    1. 就是在电脑里能看到的目录
  2. 版本库(Repository):
    1. 工作区的隐藏目录.git就是版本库
    2. 包含:1)暂存区(stage/index);2)分支master,以及指向master的指针HEAD;3)其他

   提交的过程:

  1. git add:把文件修改添加到暂存区
  2. git commit提交更改,实际上是把暂存区的所有内容提交到当前分支
  3. 提交后,如果没有对工作区做任何更改,那么工作区就是干净的。

参考:git和SVN的区别

     廖雪峰:Git学习

【CS】笔试常见题目的更多相关文章

  1. java异常面试常见题目

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

  2. 小议 - 来自《XX时代XX公司》的笔试编程题目

    经过几天的雾霾,魔都终于放晴了.哥投了几天的简历,希望找到一份.NET开发方面的岗位.也收到了几个面试邀请.这不应Ge老师的要求,选了个良辰吉日,带着身份证,学位证怀揣着2B青年的梦想来这个XX公司面 ...

  3. 那些年~~~我们的C#笔试内测题目

    <深入.NET平台和C#编程>内部测试题-笔试试卷 一 选择题 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格 ...

  4. 【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别

    开始本文之前,先让我们记住一个口诀(这个口诀只针对基础的类比如String.Integer等,如果是自定义的类,需要看equal的具体实现): equal比较其值,== 比较地址 这两天在走查代码的时 ...

  5. 面试10大算法汇总+常见题目解答(Java)

    原文地址:http://www.lilongdream.com/2014/04/10/94.html(为转载+整理) 以下从Java的角度总结了面试常见的算法和数据结构:字符串,链表,树,图,排序,递 ...

  6. java面试常见题目

    JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...

  7. 面试&笔试常见题,你了解多少?

    HTML:1.  什么是语义化的HTML?有何意义?为什么要做到语义化?(高频率考题)2.  行内元素和块元素分别有哪些?(高频率)3.  严格模式与混杂模式的区分?如何触发这两种模式?(高频率)4. ...

  8. java 链表常见题目

    如何判断单链表是否存在环 方法一.穷举遍历方法一:首先从头节点开始,依次遍历单链表的每一个节点.每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比 ...

  9. sql常见题目

    1 --student学生表(sno,sname,sex,birthday,tel) 2 --Course课程表(cno,cname) 3 --Sc 学生成绩表(sno,cno,score) 4 1. ...

随机推荐

  1. java 检查异常 和 非检查异常

    个人见解 ,如果有问题 ,还希望大神们 指正 1. 非检查异常 又称运行时 异常 ,所有 继承自 RuntimeException 的异常都是 非检查异常  ,, 如果你不处理  会有 虚拟机 mai ...

  2. openssl初步使用

    centos平台 md5.c #include <stdio.h> #include <string.h> #include <stdlib.h> //#inclu ...

  3. RNA-Seq数据去接头(Adapter)

    1.adapter是一段短的序列已知的核酸链,用于链接序列未知的目标测序片段. 2.barcode,也称为index,是一段很短的寡居核酸链,用于在多个样品混合测序时,标记不同的样品. 3.inser ...

  4. Apache Prefork、Worker和Event三种MPM分析

    三种MPM介绍 Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到 ...

  5. 兼容ie透明书写

    filter:alpha(opacity=0); opacity:0;filter:alpha(opacity=70); opacity:0.7;

  6. 36、NSTimer使用详解-开启、关闭、移除

    1.要是用一个定时器,首先要定义一个定时器: @property(strong,nonatomic)NSTimer *myTimer;//定时器 2.初始化,初始化有两种方式: 第一种: + (NST ...

  7. Linux硬件信息命令大全

    硬件信息 在linux系统中,有很多命令可以用于查询主机的硬件信息,有些命令仅仅针对于特定的硬件部件,比如cpu,内存等,而有些命令可以查询很多的硬件信息. 这篇帖子简单地带大家了解一下最常用的查询各 ...

  8. 安卓逆向学习---初始APK、Dalvik字节码以及Smali

    参考链接:https://www.52pojie.cn/thread-395689-1-1.html res目录下资源文件在编译时会自动生成索引文件(R.java ), asset目录下的资源文件无需 ...

  9. JSAAS 平台实现 微信类似的TOKEN机制

    在企业微信中,我们在调用微信接口时,我们需要首先获取token,然后根据token,调用API接口方法.这个token是有生命周期的,微信的token默认的生命周期是7200秒. 因此这个token可 ...

  10. STL六大组件

    1.容器 顺序容器.关联容器 2.算法 各种常用算法,sort.search.copy…… 3.迭代器 用来索引容器中元素,是容器与算法之间的胶合剂 4.仿函数(另名函数对象) 仿函数就是让一个类的使 ...