精华内容
下载资源
问答
  • 面试Java后端开发工程师自我介绍
    2021-08-12 19:57:54

    面试官好,我叫李旭,是一名即将于2022年毕业于北方民族大学商学院工商管理专业的学生。由于我对java编程语言特别感兴趣,所以我报名了达内的Java培训班,专业的进行java编程方面的学习。我具有扎实java语言基础、良好的面向对象编程习惯、遵循阿里巴巴编码规范;熟练使用spring、mybatis、 mybatisPlus、 springboot、springCloud、 Shiro主流开源框架;熟练使用jquery、layui、 easyui、 vue、 elementui主流的前端框架技术进行开发工作;熟练使用mysql数据库及sql语言进行数据库开发工作;此外我还在学生会宣传部做过一年的副部长,能够运用photoshop进行对图像的简单处理。

    在学习上我一丝不苟,获得了少数民族学习进步奖;工作上我也任劳任怨,有很好的团队意识。我在大学期间担任班长,策划了班上的一系列班级活动,获得一致好评,被评为”优秀班干部”,这为提高我的交际能力和培养我的团队合作精神打下了良好基础。

    在校期间我也参加了很多活动,获得了一些荣誉,主要参加了两次学院级PS海报设计大赛,分别获得了二等奖和三等奖,参加了党团知识竞赛获得了一等奖,“商战杯”沙盘模拟大赛三等奖,宁夏区ERP沙盘模拟大赛优秀奖等。

    大学毕业,既是一个终点,更是一个起点。现在,我满怀信心地踏上了人生的新台阶,非常希望有一个能让我发挥潜力和展现价值的舞台。盼望贵单位给我一个机会,我将全力以赴,用满腔的热情和辛勤的汗水,奉献自己的青春和才华!

    更多相关内容
  • 前端工程师和后端工程师对于互联网应用开发来说,前端开发和后端开发工程师的两大工作领域,这点已经是很多同学的常识。于是,经常有人会问,前端工程师和后端工程师都是做什么的?薪资如何?未来的行业发展前景...

    前端工程师和后端工程师

    对于互联网应用开发来说,前端开发和后端开发是工程师的两大工作领域,这点已经是很多同学的常识。于是,经常有人会问,前端工程师和后端工程师都是做什么的?薪资如何?未来的行业发展前景怎样?相信这些对于很多现有的软件从业人员,或是准备入行的门外汉们来说,都是模糊不清的。下面我们就首先来介绍一下二者对技术的要求和职责的范围。从根本上区分它们。

    bfc12edce62768aa427bccf2c4c40400.png

    什么是前端工程师

    前端工程师主要负责面向用户界面的处理。

    在一个网页或者App的页面上,用户能够看到的内容、图片、段落布局、链接、图标以及按钮等等,都属于前端的范畴。在互联网应用出现的早期,并没有所谓前端工程师的岗位细分。这些工作有些是由美工负责, 有些是由程序员负责。那时候,完成页面设计,所需要的技术无非是HTML、CSS和JavaScript脚本语言,也就是俗称的“三剑客”。

    6ad550b3301dab730016170e1f4e41ef.png

    后来随着硬件的发展,客户端的能力被不断提升。更伴随着Web2.0的普及,以及移动互联网的兴起,人们不再满足于让客户端仅仅负责应用内容的展示,更会把一部分运算迁移到客户端来完成。我们会将一些原来服务器端处理的功能迁移到客户端。比如状态管理,以减轻后端的数据吞吐量,提高后端的数据处理效率。再比如路径管理,在传统的多页应用程序开发中,一般都是后端来返回某个页面,前端只负责显示。而现在的应用开发中,一般都是单页应用开发,这样路径的处理就在前端进行了,提高前端应用的处理效率,增强用户体验。

    同时在手机端,因为不同的终端设备在显示方式、显示能力上的差异,更是有了诸如屏幕适配、自适应布局等新的需求。于是,HTML5技术族系就诞生了,相应的,也出现了专注于完成此类工作的程序员群体,于是,前端开发领域应运而生。

    0dfa55331b55995703b55edc77a3fb5d.png

    当然,前端工程师手中最有力的武器,依然是升级版的“三剑客”。

    1387ffaabcf3a7be6ce8de6dba4f706e.png

    但是仅仅使用“三剑客”,开发效率和代码数量都是惊人的,而面对应用的爆炸式增长,以及需求的频繁更迭,各种的框架、工具也就越来越多,以提升开发的效率。

    前几年前端开发用到的技术,除了HTML5、CSS3、JavaScript之外,无非是Jquery、Bootstrap、Node.js 、AngularJs等技术。从开始的切页面,到复杂的前端单页应用,Node服务端应用,移动端React-Native等。

    而苦逼的是,这个领域的开发技术迟迟无法稳定下来,不仅工具、框架的迭代速度很快,而且大的技术体系和新的技术族系,也在不断的发生变革,甚至是颠覆式的革命。于是,前端工程师,一直在疲于应付,疲于追赶。

    57fb6e91916deeb7a3e9649a5f5e685e.png

    近10年间前端技术经历了3次大的变化。2010年--2015年前端主要使用的技术是Android和IOS。2016--2019年使用的技术是HTML5、CSS3、ES6、JavaScript、Vue、RN等。2019年中Google在全球移动者开发大会上,推出了新的前端技术Flutter。这三次变化可以说是翻天覆地的。核心编程语言改了又改,变了又变。比如,Android用的是Java、IOS用的是Objective-C,后面都变成了JavaScript。最后到了Flutter又换成了Dart。这对于前端工程师简直是毁灭性的打击。甚至有些前端工程师在GitHub上公开留言老子学不动了。

    1426b3c8b6b52e1b5353ec290a8dc5af.png

    4f01cae8730de19fbdc4aad95cee8a30.png

    另一方面,前端开发因为涉及的领域比较片面。只负责进行数据展示,不负责核心业务开发,创造的价值有限。所以在后续晋升通道上,天花板也会较低,局限性较大。比如,大神尤宇希(前端著名框架VUE的作者)在加盟阿里巴巴时,只拿到了P9(阿里的技术职级体系)。很多前端工程师为他们的领袖打抱不平。

    d35eae1d1814a680c568431614f06f0d.png

    e10ab7e4db8f2592704bff8a22b27f2a.png

    于此同时,由于前端开发的工作目标,是让用户在PC或手机屏幕上,看到的产品内容更棒,更吸引人,因此,前端工程师要有一些美学的天赋和产品的感觉。这对于很多理工科出身的同学来说,也是不太容易建立的。 

    什么是后端工程师

    后端工程师主要是开发服务器端运行的代码,是用户不可见的。

    14e1a4e9610619decae6d80481905934.png

    打个比方,后端的工作就像盖楼房的地基部分和框架部分。通常,后端工程师需要搭建后端的支撑服务容器;针对于不同行业进行相应的功能接口设计;完成具体的业务逻辑实现。在具体的功能实现部分可以采用Java、Python等编程语言来实现。

    后端开发使用的Java编程语言,主要用到的是包括但不限于JVM、高可用、高并发、Spring、SpringMVC、Hibernate、Mybatis、Http协议、Tomcat服务器等技术。而Python编程语言同样擅于开发后端应用,所使用的主要技术有Django、Flask、爬虫、Numpy、Pandas、Nginx、Matlab、Ternado等。随着云计算、大数据、人工智能的发展,又涌现了Docker容器技术、Serverless、Hadoop、Flink、Pytorch、Tensorflow等新型架构。后端开发的比重、重要性又有了大幅度提高。

    6a3d885575634feb72bcc27bdba70d77.png

    后端开发主要负责系统核心业务实现,是一个系统的灵魂。所使用的编程语言Java(1995年诞生)、Python(1989年诞生),都非常稳定(甚至比好多同学们岁数都大)。随着大数据、人工智能的发展,作为主力编程语言的Java、Python。他们更加会大放异彩。

    最后由于项目开发过程中,往往后端的功能模块比较多,业务也较为重要,所以相应的所需要的开发人员数量也会较多。而前端工程师,主要负责数据显示,所以需求量较少。一个公司前后端人员比例大概为1:5。而后端工程师往往能够接触到系统的核心业务和核心数据流程,因此,对项目组的重要性也会相应大一些。

    当然,做一个好的后端工程师,也是会有很多的技术、框架需要掌握和学习。只是和前端相比,技术的变化不那么大,也不易发生颠覆性的技术革新,程序员只需要随着技术的发展,对现有的知识体系进行迭代和更新就好了。

    从后端工程师的任职要求来看,除了需要掌握必要的技术之外,对程序员的算法能力、数据建模能力、逻辑能力要求比较高,而这些,正是理工类学生所擅长的。

    123f0766daff6bbfa3e39e2a5d780c96.png

    前端工程师和后端工程师的薪资对比

    一般来说,由于工作内容的复杂性和多样性,对于初级前端工程师的工资相对来说要低于后端工程师的工资,但是这个差距并不是很大。但随着工作年限的增加,后端工程师的上升空间要比前端要高。此外由于前端技术更新的频率,给程序员积累提升的周期比较短,这方面也限制了前端工程师的发展。下面统计了北京,深圳,上海,杭州几个软件行业比较发达城市的薪资数据,可以看到后端方向的工程师薪资普遍比前端要高。

    b69c7f7ef0fa6d3ab3bb892ea09a16ae.png

    8d8c1c20cc15a7bcaa75eece7a62055a.png

    22a7060cb33ea4e66e72cbb4b53f26ce.png

    3e70ebb0fdd299f20eb05acf9f130d60.png

    结束语

    前端工程师是在技术的发展中所产生的一个细分的领域。其实对于很多企业来讲,这种细分的界限并不十分清晰。例如,最近企业中流行的所谓“全栈工程师”,就是要求后端工程师也要有一定的能力,去承担前端开发的任务;前端工程师,也要了解后端应用开发的细节。在这个融合的过程中,前端工程师的地位略显尴尬,毕竟,专业的互联网美工,也会具备一定的编码能力,而后端工程师,由于他们的技术知识体系相对完善,对公司业务的底层核心更为了解,也有能力分担前端的一部分工作。因此,前端的“领地”也就不断的被蚕食和侵占。

    前端和后端哪个更重要,哪个更有价值,一直众说纷纭。也许这样的争论还会持续下去,直到这两个领域彻底融合统一,形成共识。

    05a1e5617a5d9f6e22b45b538de988e3.png

    对于有志于从事软件开发的同学来说,前端和后端只是企业中两个不同职能的岗位,无论从事哪个岗位,只要你技术过硬,项目开发能力突出,都能有所发展。只是我们建议,对于编程的初学者,还是应该从后端入手,毕竟无论是Java还是Python,都是成熟而完整的编程体系,对于同学们打好编程基础,训练编程最基本的技能,都能起到事半功倍的作用,在未来的职业发展中,也会有更广阔的用武之地。

    展开全文
  • 一个后端软件工程师的基本工作职业是完成后端程序的设计与开发。而后端开发的工作流程往往包括以下几个方面。 确定需求:后端的需求从产品经理来,在确定产品需求的过程中,后端工程师必须确定产品需求是否存在逻辑...

    10月29日 广州 多云
    在这里插入图片描述

    一个后端软件工程师的基本工作职业是完成后端程序的设计与开发。而后端开发的工作流程往往包括以下几个方面。

    确定需求:后端的需求从产品经理来,在确定产品需求的过程中,后端工程师必须确定产品需求是否存在逻辑问题,并有一套实现方案。当然,一般情况下产品需求是没问题的,只是实现的难易程度不同而已。但不排除产品经理不会提出“app主题颜色跟随手机外壳变化而变化”这种需求。

    开发排期:在确定需求之后,后端工程师要对自己即将的开发工作做一个时间计划,以便跟进计划。产品经理往往最在意你的时间节点。不过,最终的时间节点一般和前端工程师一起定的。

    技术方案选择:确定项目需求以后,我们就需要确定自己的技术方案,比如说,选择什么开发框架,选择什么数据库里,运行在什么环境里。在一些复杂和高并发的场景中,不仅要考虑程序的功能,更重要的是健壮性和安全性。实际上,在程序开发中,第一重要是安全,其次是健壮,最后才是功能。整个项目架构需要后端工程师进行合理设计,当然了,除了上面说的这些特性,项目应当还要做到易维护。如果做出来的系统只有你自己能搞定,显然是不行的。

    设计数据库:在项目开发之前,先设计好数据库。一般把需要存储的结构化数据进行表结构的设计。数据库设计时需要注意语意化,需要给予备注的添加合理的备注。

    项目开发:在项目开发前,一定要把开发的功能点整理出来,并挨个实现。编码开发是整个项目最核心的部分,也是最花时间的部分。

    项目对接:在开发过程中,要编写开发文档,接口文档,与前端工程师一起对接功能。项目后期,配合测试工程师进行项目质量检测,功能测试。最后,配合运维同事进行项目上线。

    在这里插入图片描述

    实际上,要高效高质量地完成后端开发工作,需要学习和作用很多知识。这些技能包括:Linux操作能力,编码能力,数据库设计能力,文档编写能力,英文阅读能力,组织和设计能力。等等,需要在平时工作和生活中不断学习,不断提高自己。

    当然,专业技术能力是需要用心学习和总结,如果说技术很容易地学会,很容易登达顶峰,那就不是技术了!

    在这里插入图片描述

    原创文章,禁止转载

    展开全文
  • 无论做前端开发还是后端开发,网络知识是必备的知识。这部分知识是基础中的基础,是我们必须掌握的内容。网络相关的问题也是在面试过程中经常被问到的内容。本文主要梳理了一下网络相关的主要知识点及面试中经常被问...

    无论做前端开发还是后端开发,网络知识是必备的知识。这部分知识是基础中的基础,是我们必须掌握的内容。网络相关的问题也是在面试过程中经常被问到的内容。本文主要梳理了一下网络相关的主要知识点及面试中经常被问到的内容,希望对大家有所帮助。

    OSI有哪几层,会画出来,知道主要几层的各自作用

    OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。其一共有7层:
    图1 OSI分层

    1.  应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用
    2.  表示层(数据):主要解决拥护信息的语法表示问题,如加密解密
    3.  会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的
    4.  运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠
        与不可靠的传输,传输层的错误检测,流量控制等
    5.  网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的
        传输
    6.  数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正
    7.  物理层(比特流):设备之间比特流的传输,物理接口,电气特性等*   
    

    TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称

    TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。
    图2 TCP/IP网络分层

    1.  应用层(TELNET、FTP、SMTP)
    2.  运输层(TCP、UDP)
    3.  网际层(IP、ICMP)
    4.  网络接口层(PPP)*   
    

    各个层使用的是哪个数据交换设备。(交换机、路由器、网关)

    在广域网场景下,整个网络传输需要经过很多设备,包括网关、交换机、路由器等等,
    图3 交换设备示意图

    1. 网关:应用层、传输层(网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连)
    2. 路由器:网络层(路由选择、存储转发)
    3. 交换机:数据链路层、网络层(识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中)
    4. 网桥:数据链路层(将两个LAN连起来,根据MAC地址来转发帧)
    5. 集线器(Hub):物理层(纯硬件设备,主要用来连接计算机等网络终端)
    6. 中继器:物理层(在比特级别对网络信号进行再生和重定时,从而使得它们能够在网络上传输更长的距离)

    TCP协议是如何定义的,它的数据格式是什么样子的?

    TCP是基于传输层的协议,协议文件可从RFC793得到,使用广泛,面向连接的可靠协议。它能把报文分解为数段,在目的站再重新装配这些段,支持重新发送未被收到的段,提供两台设备间的全双工连接,允许它们高效地交换大量数据。TCP使用滑动窗口协议来高效使用网络。由于TCP很少干预底层投递系统的工作,它适应各种投递系统,且提供流量控制,能使各种不同速率的系统进行通信。报文段是TCP所使用的基本传输单元,用于传输数据或控制信息。如下是TCP协议的报文格式:
    image

    IP报文的格式,格式的各个字段的含义要理解

    IP是Internet最基本的协议。IP是面向报文的协议,它独立处理每个报文包,每个报文包必须含有完整的寻址信息。IP报文包的格式如图所示:
    1.jpg

    关于TCP/IP的内容,请参考本号之前的文章《从socket到TCP协议,透彻理解网络编程》

    ICMP协议的主要功能

    用于在IP主机、路由器之间传递控制消息
    image

    IP地址的分类,如何划分的,及会计算各类地址支持的主机数

    IP地址的类型共有4种(如图3所示):A类用于处理超大型网络,最多16387064个主机(1~126);B类网络最多可有64516个主机(网络地址的第一段为128~191);C类用于小型网络,最多可有254个主机(网络地址的第一段为192~223);D类用于多点播送,用于多目的信息的传输。全零(“0.0.0.0”)地址对应于当前主机,全1地址(“255.255.255.255”)是当前子网的广播地址。

    1.  A类地址:首位为0,1.0.0.1~~126.255.255.254;主机号24位
    2.  B类地址:首位为10,128.0.0.1~~191.255.255.254;主机号16位
    3.  C类地址:首位为110,192.0.0.1~~223.255.255.254;主机号8位
    4.  D类地址(多播地址,也叫做组播地址):首位为1110,224.0.0.1~~239.255.255.254
    5.  E类地址:此类地址是保留地址,首位为11110,240.0.0.1~~254.255.255.254
    

    划分子网、构造超网

    1. 划分子网(变长子网掩码VLSM):划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,与此同时主机号也减少相应位数(总位数32位不变)。由此两级IP地址可变为三级IP地址: IP地址 ::= {<网络号>,<子网号>,<主机号>},划分子网只是把IP地址的主机号这部分进行再划分,并不改变IP地址原来的网络号
    2. 构造超网(无分类编址CIDR):CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,把32位的IP地址划分为两个部分。如:128.14.35.7/20是某个CIDR地址块中的一个地址,其前20位是网络前缀(用下划线表示的部分),后面的12位为主机号*

    DNS的概念,用途,DNS查询的实现算法

    • 概念
      域名解析,www.xxx.com转换成ip,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串
      DNS协议运行在UDP协议之上,使用端口号53
    • 主机解析域名的顺序
      1. 浏览器缓存
      2. 找本机的hosts文件
      3. 路由缓存
      4. 找DNS服务器(本地域名、顶级域名、根域名)
      5. 迭代查询、递归查询*

    常见熟知端口

    image

    TCP与UDP的概念相互的区别及优劣

    1.  TCP面向连接,UDP面向无链接
    2.  TCP面向报文,UDP面向字节流
    3.  TCP提供可靠传输服务(数据顺序、正确性),UDP传输不可靠
    4.  TCP协议传输速度慢,UDP协议传输速度快
    5.  TCP协议对系统资源要求多(头部开销大),UDP协议要求少*   
    

    UDP报文的格式,字段的意义

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
    图 UDP报文格式
    UDP通过IP协议进行数据传输,如图是两者之间的关系。
    图 UDP与IP的关系

    TCP报文的格式,字段的意义

    image

    TCP通过哪些措施,保证传输可靠

    1.  流量控制
    2.  让发送方的发送速率不要太快,要让接收方来得及接收
    3.  窗口大小是一个可以改变的值,它由接收端主机控制,附加在 TCP 首部的“窗口大小”字段中
    4.  拥塞控制
    5.  防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载
    6.  拥塞控制方法:慢开始、拥塞避免、快重传和快恢复*   ### 三次握手,四次断开过程
    

    image.png

    请求各个状态的意义如下

    image.png

    1.  LISTEN - 侦听来自远方TCP端口的连接请求;
    2.  SYN-SENT -在发送连接请求后等待匹配的连接请求;
    3.  SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
    4.  ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
    5.  FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
    6.  FIN-WAIT-2 - 从远程TCP等待连接中断请求;
    7.  CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
    8.  CLOSING -等待远程TCP对连接中断的确认;
    9.  LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
    10.  TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
    11.  CLOSED - 没有任何连接状态;*  
    

    TCP 的拥塞控制是怎样的

    拥塞算法:

    慢启动(Slow Start)发送方维护拥塞窗口变量cwnd,先用小数据试探网络拥塞,没问题后来断加倍
    拥塞避免(Congestion voidance):拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1
    重传机制
    快速重传(Fast Retransmit):快重传要求接收方收到失序报文段后立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
    快速恢复(Fast Recovery):当发送方连续收到三个重复确认时,就把慢开始门限ssthresh门限减半。接下来将cwnd设置为ssthresh的大小,然后执行拥塞避免算法

    拥塞控制和流量控制都是什么,两者的区别?

    拥塞控制:对网络中的路由和链路传输进行速度限制,避免网络过载;包含四个过程:慢启动、拥塞避免、快重传和快恢复。
    流量控制 :对点和点/发送方和接收方之间进行速度匹配,由于接收方的应用程序读取速度不一定很迅速,加上缓存有限,因此需要避免发送速度过快。

    为什么要3次握手,4次挥手

    三次握手:防止已过期的连接请求报文突然又传送到服务器,因而产生错误
    四次挥手:确保数据能够完成传输,但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的*

    TCP协议如何来保证传输的可靠性

    数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
    对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
    丢弃重复数据:对于重复数据,能够丢弃重复数据;
    应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
    超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
    流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

    HTTP基本格式

    HTTP请求

    image

    HTTP响应

    image

    GET、POST区别

    一般用于获取/查询资源信息;GET参数通过URL传递,传递的参数是有长度限制,不能用来传递敏感信息。
    当客户端给服务器提供信息较多时可以使用POST;POST会附带用户数据,一般用于更新资源信息;POST将请求参数封装在HTTP 请求数据中,可以传输大量数据,传参方式比GET更安全。
    image

    HTTP 、TCP、Socket区别

    TCP/IP代表传输控制协议/网际协议,指的是一系列协组

    HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议

    Socket是TCP/IP网络的API其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议

    综上所述:需要IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。HTTP基于TCP协议,但是却可以使用socket去建立一个TCP连接

    Cookies 和 Session的区别

    cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据
    session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了
    cookie数据保存在客户端,session数据保存在服务器端*

    一次完整的HTTP请求所经历的步骤

    图3 HTTP请求过程分析

    1.  DNS解析(通过访问的域名找出其IP地址,递归搜索)
    2.  HTTP请求,当输入一个请求时,建立一个Socket连接发起TCP的3次握手
    3.  如果是HTTPS请求建立连接后,则看Q26
    4.  客户端向服务器发送请求命令(一般是GET或POST请求)
    5.  客户端发送请求头信息
    6.  服务器发送应答头信息
    7.  服务器向客户端发送数据
    8.  服务器关闭TCP连接(4次挥手)
    9.  客户端根据返回的HTML,CSS,JS进行渲染
    

    为什么要用HTTPS?

    1. 通信使用明文(不加密),内容可能被窃听(抓包工具可以获取请求和响应内容)
    2. 不验证通讯方的身分,任何人都坑你发送请求,不管对方是谁都返回相应
    3. 无法证明报文的完整性,可能会遭到篡改,即没有办法确认发出的请求/相应前后一致*

    HTTP与HTTPS的相同和异同点

    1.  HTTPS需要用到CA申请证书
    2.  HTTP是超文本传输协议,信息是明文的;HTTPS则是具有安全性的SSL加密传输协议
    3.  HTTP是80,HTTPS是443
    4.  HTTP的连接很简单,是无状态的,HTTPS是HTTP+SSL协议构建的,可进行加密传输、身份认证的网络协议,比HTTP协议安全*   
    

    加密&证书

    1.  加密方法:
    
        *   对称加密(加密和解密使用相同的密钥的加密算法) :DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA
        *   非对称加密(非对称加密算法有两个密钥:公开密钥(public key)和私有密钥(private key);并且加密密钥和解密密钥是成对出现的):RSA、DSA/DSS
        *   不可逆加密:数字摘要是采用单项Hash函数将需要加密的明文"摘要"成一串固定长度(128位)的密文,“数字摘要”是https能确保数据完整性和防篡改的根本原因。常用的摘要主要有MD5、SHA1、SHA256等。
    2.  数字签名:
        数字签名技术就是对"非对称"和"数字摘要"两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接受者。接受者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原因产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输的过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。明文——>hash运算——>摘要——>私钥加密——>数字签名
    
    3.  数字证书
    

    使用HTTPS方式与Web服务器通信时有以下几个步骤(HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全)

    1.  客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接(通知可加密的算法)。
    2.  Web服务器收到客户端请求后,会将网站的电子证书(证书中包含公钥)传送一份给客户端。
    3.  客户端确认电子证书是否刚才访问网站所属
    4.  客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
    5.  Web服务器利用自己的私钥解密出会话密钥(客户端发来的对称加密密钥)。
    6.  Web服务器利用对称密钥加密与客户端之间的通信。*   ### HTTPS的结构图
    
    ![image](//upload-images.jianshu.io/upload_images/2979410-73b3c96ec301dd32.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/946/format/webp)
    

    TLS/SSL 原理

    1.  SSL(Secure Sokcet Layer,安全套接字层)
    2.  TLS(Transport Layer Security,传输层安全协议)
    
        ![image](//upload-images.jianshu.io/upload_images/2979410-3c7ed47912a40f33.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
    

    HTTPS与代理

    1.  代理作用:提高访问速度、Proxy可以起到防火墙的作用、通过代理服务器访问一些不能直接访问的网站、安全性得到提高
    
        ![image](//upload-images.jianshu.io/upload_images/2979410-07c146f0ef4788ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/803/format/webp)
    

    SPDY

    1.  SPDY可以说是综合了HTTPS和HTTP两者有点于一体的传输协议
    2.  降低延迟、请求优先级、header压缩、服务端推送*   ### HTTP2.0
    

    image

    播放视频用TCP还是UDP?为什么?

    播放视频适合用UDP。UDP适用于对网络通讯质量要求不高、要求网络通讯速度能尽量快的实时性应用;而TCP适用于对网络通讯质量有要求的可靠性应用。

    get和post的区别?

    HTTP和TCP的区别

    TCP是传输层协议,定义数据传输和连接方式的规范。通过三次握手建立连接、四次挥手释放连接。
    HTTP是应用层协议,定义的是传输数据的内容的规范。HTTP的连接使用"请求-响应"方式。基于TCP协议传输。

    HTTP和Socket的区别

    HTTP是应用层协议;基于TCP协议;使用“请求—响应”方式建立连接,在请求时需要先建立连接且客户端要先发出请求,可见服务器需要等到客户端发送一次请求后才能将数据传回给客户端。
    Socket(套接字)是对TCP/IP协议的封装,是接口而不是协议;创建Socket连接时可以指定传输层协议TCP或UDP;Socket建立连接过程三步骤:服务器监听->客户端请求->连接确认,可见服务器可以直接将数据传送给客户端。

    Http和Https的区别

    端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
    资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
    开销:Https通信需要证书,而证书一般需要向认证机构购买;

    DDos 攻击

    客户端向服务端发送请求链接数据包
    服务端向客户端发送确认数据包
    客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认

    DDos 预防 ( 没有彻底根治的办法,除非不使用TCP )

    限制同时打开SYN半链接的数目
    缩短SYN半链接的Time out 时间
    关闭不必要的服务

    Get与POST的区别

    从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
    从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
    从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连。特别地,如果数据是英文字母/数字,原样发送;否则,会将其编码为 application/x-www-form-urlencoded MIME 字符串(如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII);而POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中。
    就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
    从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

    TCP和UDP分别对应的常见应用层协议
    TCP对应的应用层协议

    FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
    Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
    SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。
    POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。
    HTTP:从Web服务器传输超文本到本地浏览器的传送协议。

    UDP对应的应用层协议

    DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    TFTP(Trival File Transfer Protocal):简单文件传输协议,该协议在熟知端口69上使用UDP服务

    ** 79. http 响应码 301 和 302 代表的是什么?有什么区别?**

    答:301,302 都是HTTP状态的编码,都代表着某个URL发生了转移。

    **区别: **

    301 redirect: 301 代表永久性转移(Permanently Moved)。

    302 redirect: 302 代表暂时性转移(Temporarily Moved )。

    80. forward 和 redirect 的区别?

    Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。

    直接转发方式(Forward),客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。

    **间接转发方式(Redirect)**实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

    举个通俗的例子:

    直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;

    间接转发就相当于:“A找B借钱,B说没有,让A去找C借”。

    81. 简述 tcp 和 udp的区别?

    TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。

    TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。

    Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

    UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

    每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。

    TCP对系统资源要求较多,UDP对系统资源要求较少。

    83. 说一下 tcp 粘包是怎么产生的?

    ①. 发送方产生粘包

    采用TCP协议传输数据的客户端与服务器经常是保持一个长连接的状态(一次连接发一次数据不存在粘包),双方在连接不断开的情况下,可以一直传输数据;但当发送的数据包过于的小时,那么TCP协议默认的会启用Nagle算法,将这些较小的数据包进行合并发送(缓冲区数据发送是一个堆压的过程);这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了。

    image

    ②. 接收方产生粘包

    接收方采用TCP协议接收数据时的过程是这样的:数据到底接收方,从网络模型的下方传递至传输层,传输层的TCP协议处理是将其放置接收缓冲区,然后由应用层来主动获取(C语言用recv、read等函数);这时会出现一个问题,就是我们在程序中调用的读取数据函数不能及时的把缓冲区中的数据拿出来,而下一个数据又到来并有一部分放入的缓冲区末尾,等我们读取数据时就是一个粘包。(放数据的速度 > 应用层拿数据速度)

    image

    get 和 post 请求有哪些区别?

    GET在浏览器回退时是无害的,而POST会再次提交请求。

    GET产生的URL地址可以被Bookmark,而POST不可以。

    GET请求会被浏览器主动cache,而POST不会,除非手动设置。

    GET请求只能进行url编码,而POST支持多种编码方式。

    GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

    GET请求在URL中传送的参数是有长度限制的,而POST么有。

    对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

    GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

    GET参数通过URL传递,POST放在Request body中。

    HTTP 和 TCP 有什么关系

    http是在tcp基础上的请求响应式协议。
    tcp为传输层协议,http为应用层协议

    HTTP 1.0 和 HTTP 1.1 的差别

    http1.1增加了如下功能

    可扩展性(1.1增加了版本号,OPTIONS,Upgrade等)
    缓存强化(cache相关)
    带宽优化(文件断点续传,range相关)
    长连接(keep-alive相关)
    host头
    身份认证,状态管理

    HTTP 头部有哪些字段

    举例:

    Expire
    If-Modified-Since
    Last-Modefied
    Pragma:no-cache
    ETag
    If-None-Match
    Cache-Control
    Accept-Language
    Accept-Charset
    Content-Range
    Transfer-Encoding
    Origin
    Host
    User-Agent
    Access-Control-Allow-Origin
    Access-Control-Allow-Credentials
    Access-Control-Expose-Headers
    Content-Type

    为什么 HTTP 是无连接的

    无连接的意思是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。与TCP连接不是同一个意思。
    但实际上现在的HTTP支持keepalive等模式,支持单个连接处理多个请求应答。

    有没有保持长连接的 HTTP

    HTTP1.1及更新的HTTP协议都支持keepalive长连接,甚至http2还支持服务端向客户端推送数据

    TCP 中客户端发送 SYN 后客户端和服务器分别处在什么状态

    客户端SYN_SENT,服务端则接收到SYN并发出ACK后转为SYN_RECV

    服务器调用 send 后返回发送数据大小,是否可以认为客户端已收到?如何确保客户端收到数据

    send返回发送数据大小后,说明数据已经到达或到达客户端内核缓存,但并不能表明客户端的进程已经拿到数据。如果需要确认对方客户端进程收到,则需要与该进程在应用层实现相应的确认机制

    304 状态码的意义?在 HTTP 协议中的实现

    304校验缓存:浏览器端cache的信息发送到服务器校验,如果服务器认为cache依然有效,则返回304,浏览器可以继续使用该cache

    如何判断服务器文件是否已修改?知道浏览器缓存的文件与服务器文件不一致?在 HTTP 中哪个字段(TODO))

    304校验时,客户端发送条件请求,带If-Modified-Since头,值为服务器上次返回的Last-Modified头中的时间,还会带If-None-Match头,值为服务器上次返回的ETag响应头的值
    A 类地址和 B 类地址的区别

    展开全文
  • java开发工程师英文求职信Dear manager:Hello! My name is XXXXX, is a computer software professional graduates. See your Java Development Engineer Recruitment Information, I feel myself to meet the ...
  • 软件开发职位中英对照表

    千次阅读 2016-10-14 00:29:14
    有时候好奇,有时候又会忘,基于我自己呆过的公司,总结了一些职位,如果有误请指正,有其他岗位也可以留言哦。管理人员(Manager)-技术总监(CTO - ... -产品经理(Product Manager)PM开发人员 (DEV-developer)
  • 后端开发工程师必须了解的网络协议基础知识大全

    千次阅读 多人点赞 2019-08-20 19:00:04
    TIME-WAIT的作用 MSL 是 MaximumSegmentLifetime 英文的缩写,中文可以译为“报文最大生存时间”。 保持连接,可靠地终止TCP连接。 2MSL能确保网络在可靠的条件下,第四次挥手的数据包到达服务端,而客户端还未关闭...
  • 一选择题 1. Try catch Java extends关键字 重载 *p++ Floy算法错误的() A.B.C.D.... 您需要根据这个输入的列表,还原出此语言中已知的字母顺序 更多面经、笔试请见VX恭重号【IT开发与进阶】,欢迎来撩
  • 不管是小程序的横空出世,还是Web应用...再看看后端开发工程师的薪资随便一看,这薪资真心不低呀!当然,这还取决于你的技术。在一线城市,有2 年工作经验的前端开发工程师工资差不多10K~15K,如果你会些后台技术,...
  • 一文看懂Web后端开发

    千次阅读 多人点赞 2021-03-20 23:53:34
    一文看懂Web后端开发 前言 由于网络上系统地介绍后端开发的文章实在太少,而最近有恰巧有许多同学问我“什么是后端开发?”、“你为什么喜欢后端开发?”、“做后端都需要学什么?”,那么我们就来讲一讲,到底什么...
  • 流利说-后端开发工程师

    千次阅读 2014-11-14 13:26:09
    后端开发工程师/专家 • 计算机或相关专业本科以上学历,两年以上工作经验(如果你足够牛,可以尝试挑战这一条) • 以上Ruby或Java相关的后端开发经验,比如Rails、Sinatra等 • 熟悉关系型数据库,如MySQL,也...
  • 后端开发中的英语—每日一更

    千次阅读 2018-09-05 11:40:07
    invocation 调用 invoke 调用 recursion 递归 importer 进口商,提供商 proxy 代理 JUC 线程池包 RPC:Remote Promote Controll 远程过程控制 ...Balanced binary tree 平衡二叉树(AVL树...
  • java工程师英文简历范文要仔细检查已成文的`个人简历,绝对不能出现错别字、语法和标点符号方面的低级错误。最好让文笔好的朋友帮你审查一遍,因为别人比你自己更容易检查出错误。java工程师英文简历范文篇一...
  • python后端开发工程师 深圳市超频三科技股份有限公司 深圳市超频三科技股份有限公司,超频三,超频三科技,超频三 职责:1、负责集成各种维度的数据源,使用各种数据获取技巧,转换、分析、调度、存储数据,为公司业务提供...
  • 后端开发必备的前端知识 一、开发流程 最初所有的开发工作都是由后端工程师完成的,随着业务越来越繁杂,工作量变大,于是我们将项目中的可视化部分和一部分交互功能的开发工作剥离出来,形成了前端开发。 大约从...
  • 后端开发岗位要求汇总

    千次阅读 2020-08-15 14:27:08
    后端开发岗位要求汇总 一、前言 ​ 2020年,是一个“多灾多难”之年,我们经历了疫情,经历了美股熔断,经历了全球大放水,同样经历了各种活久见的事情;不过,还好国内疫情已经没有那么严重了,剩下的就是等待疫苗...
  • C++后端开发面试

    2021-01-15 00:02:46
    编码基本功 还有一类面试题不好分类,笔者姑且将其当作是考察编码基本功,这类问题既可以考察算法也可以考察你写代码基本素养,这些素养不仅包括编码风格、计算机英语水平、调试能力等,还包括你对细节的掌握和易错...
  • 看题型,应该是多种岗位共享的试题,适合后台开发、驱动开发等岗位,Linux知识居多,也包括一些操作系统,计算机网络和编程语言相关的知识。难度因人而异,有些仅仅知道,有些知识了解背后原理、实现。 题型如下,...
  • 面试的开发工程师,基本以Java基础技术为主,包括Java的四大特性以及模式,会考写代码,也会考你实际使用中的项目经验,包括你对继承、封装、实现的了解和使用。问我的主要问题包括:sychronize锁方法和锁块的区别,...
  • 后端开发之组织架构各部分概念及联系基本概念1.1 集团1.2 公司1.3 部门1.4 岗位1.5 员工1.6 角色1.7 客户 基本概念 1.1 集团 集团”是“集团公司”的俗称,比如“××集团”,全称肯定是“××集团有限公司”或“×...
  • 看到“如何面试Python后端工程师”这个问题下一位大牛罗列的问题,感觉挺有价值。现在记在这里,找出这些问题的答案,持续更新。 一 . 语言 1.推荐一本看过最好的python书籍? 拉开话题好扯淡  目前所知道的,看...
  • 1.不知道什么的英文 2.PHP错误种类. 3. var_dump (0123==123); var_dump ('0123'==123); false true 4.36个人,6个赛道,没有秒表,比赛多少次能够得出前三名? 5.正方形四个角有四个虫子,虫子...
  • 数字前端后端区别 下面转自:http://blog.sina.com.cn/s/blog_875c3b2f01010pi6.htmlIC前端主要是数字前端设计、软件硬件验证、FPGA验证...
  • 1、Web开发使用Python的一个基本应用就是进行Web开发,在国内,大一些的使用Python做基础设施的公司有美团、饿了么,以及搜狐等,在国外,Googe在其网络搜索系统中广泛应用了Python并且聘用了Python之父,另外,...
  • 我们目前急需 golang 工程师,薪资 25-60K base 有期权 ,目前公司资金充足,欢迎想做牛 B 产品的技术来加入我们 工作地点:上海 广兰路 — 展想广场 招聘岗位 Golang 后端开发 岗位描述 负责 OpsMind 平台后端...
  • 随着互联网行业的飞速发展,对专业的IT技能人才的需求量也随之变大。据统计,未来五年,我国互联网人才需求量还会持续增长,预计需求量...通过之前对同学们的沟通发现,好多同学不了解“前端、后端、全栈”是什么...
  • 那么问题来了,想学Python,Python工程师工资一般多少?值得去学吗? 说句实在话,还得看你自己:自己足够用功,经验够,两三万月薪也不是不可能;如果资历浅,又不用功,想要高薪,除非运气够好!学习Python可以从事...
  • 作者:pikeduo 链接:https://nowcoder.net/discuss/868691?type=2&channel=-1&source_id=discuss_tag_discuss_hot_nctrack 来源:牛客网 我们约定"模糊回文字母串"的定义如下: 对于一一个含有英文字母的字符申。...
  • Java初级开发工程师工作的岗位职责

    千次阅读 2021-02-26 15:40:25
    Java初级开发工程师需要根据开发规范与流程独立完成编码、及相关文档。下面是学习啦小编为您精心整理的Java初级开发工程师工作的岗位职责。Java初级开发工程师工作的岗位职责1职责:1. 协助完成需求的整理和软件设计...
  • (给前端大学加星标,提升前端技能.)作者:吕小鸣https://juejin.im/post/5d7990a16fb9a06ad16f9d55前端架构师,听起来就是个很高大上的职位,在大多数程序员的眼中,架构师一般从事后端开发,Java或者C++出身,它们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,088
精华内容 5,235
关键字:

后端开发工程师 英文

友情链接: ex.zip