- 中间件Tomcat和Jetty提供了jsp和servlet的服务
- Webservice:
- Xml security和gogmdel机制是webservice中的xml数据安全的基本机制
- Soap wevservice通过wsdl描述接口,wsdl支持对webservice进行人机可识别的描述
- 面向对象:
- 面向对象的最重要的特性是支持继承、封装和多态
- 系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展
- 面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
- 过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装
- Java和C++都是静态类型的面向对象编程语言
- 二分查找:
- 表必须有序,且表只能以顺序方式存储
- 数据库的事物:
- 一个数据库事务可以包含多个查询、修改、删除、插入等数据库动作,它们要么作为一个整体完全得到确认,要么完全失败
- 一个事务只能包含对一个数据库实例的数据操作,不允许跨多个数据库实例,跨多个数据库实例需要分布式事务支持
- 数据库事务会给数据库带来并发操作带来一定影响,会降低系统的并发能力
- Xml:
- 每个合格的XML都有唯一的根元素
- XML的格式上是要求严格的,每个元素的开闭必须完整,不允许交叉开闭,如
- XML常用于WebService中用来做数据交换的标准
- XML中元素是大小写敏感的
- XML中的数据可以通过XPATH检索查询
- XPath 是一门在 XML 文档中查找信息的语言。
- 计算机和操作系统:
- CPU根据程序计数器(PC)从内存中装载指令到CPU中执行
- 如果外设要请求CPU提供服务时,需要向其发送中断信号
- JavaWEB
- 每个WEB请求都可以被拦截,拦截方法是通过ServletFilter,并进行适当的配置
- 所有保存在会话的数据都应该是实现Serializable接口的,这样中间件能够更友好的处理会话数据
- 所有的JSP都是Servlet, JSP能完成的工作Servlet一定能够完成
- 现代的JavaWEB应用已经对文件支持了,能够直接从HttpServletRequest的getPart等方法中访问上传得文件
- 当知道JavaScript的函数的参数的个数时,使用.call(),.call中直接传递参数.当不知道函数的参数时使用.apply(), .apply使用的参数是一个数组量
- Java中的HashMap.entrySet().iterator()和CoucurrentHashMap.entrySet().iterate()返回的迭代器有什么共同点和不同点?
- 这两个方法都返回一个迭代, 迭代Map结构中存储的数据单元Entry, 每个Entry其实是一个键/值对。 HashMap中的迭代是fail-fast的, 即只要迭代过程中如果Map结构被修改,如插入和删除了数据, 迭代一般会立即失败,抛出ConcurrentModifi擦tionException异常, 而ConcurrentHashMap是支持并发操作的,在迭代过程中其被修改,迭代还是能够安全的运行,不会抛出异常。
- 请描述一下模板方法模式的意图和你对模板模式的理解?
- 在很多系统中,应用的主体框架大体是相同的, 模板方法模式正是满足这一需要而提出来的,在模板模式中, 通过一个模板方法的抽象类,把模板要完成的主体工作的框架搭好,在框架中会调用多个方法实现这些步骤,但这些方法都不提供实现,实现交给使用这个框架的程序。
- 模板方法被广泛应用于框架开发中,通过模板方法,框架把琐碎的工作完成,而在框架开发的程序,只要完成框架要求其扩展的方法即可。模板方法是一种典型的反转控制技术,对框架的流程外部并不需要掌握,只需要充当螺丝钉即可把工作完成,实现基于框架的系统搭建。
- 除了归并排序,都需要完全输入数据
- 当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序表存储结构?
- 在TCP/IP协议簇中, IP协议属于网络层的无连接协议?
- 数据链路层的主要功能:
- 提供对物理层的控制
- 流量控制
- 差错控制
- Linux系统中在给定文件中查找与设定条件相符字符串的命令是grep
软件按照设计的要求,在规定时间和条件下达到不出故障、持续运行的要求的质量特性称为可靠性- Proto:
- 对象的__proto__指向自己构造函数的prototype
- Object.prototype. __proto__=== null,说明原型链到Object.prototype终止
- 表达式 Function.prototype.__proto__.__proto__ === null 的运行结果为true
- 关于性能优化说法正确的是:
- 减少http请求次数
- 减少DOM操作
- 少用全局变量、缓存dom节点查找结果
- 哪些属性是不可以被继承的:
- margin
- position
- float
- this对象的理解:
- 在不改变this指向的前提下,this总是指向函数的直接调用者
- 如果有new关键字,this指向new出来的那个对象
- IE中attachEvent中的this总是指向全局对象Window
- 哪些请求头可以实现请求的缓存:
- Cache-Control
- Etag
- If-Modified-Since
- 实现前端的MVVM框架,View层需要支持不同终端的不同交互,单例设计模式不太适合用来实现这个需求
- fade-in动画效果无法通过贝塞尔曲线cubic-bezier实现
- 可以实现的有:linear、ease、ease-out
- 为了达到移动设备的理想viewport,可以用meta标签对viewport进行控制,meta标签内可以控制下面哪些属性
- initial-scale
- user-scalable
- minimum-scale
- 不能控制max-width
- 哪些表达式的结果为true
- undefined == null
- parseInt("1a") === 1
- [] instanceof Array
- isNaN("100")结果为false
- 属于JavaScript的基本数据类型的是:
- String
- undefined
- 不属于JavaScript的基本数据类型的是
- Function
- Integer
- Math.round()函数返回一个数字四舍五入后最接近的整数
- 如果参数的小数部分大于0.5,四舍五入到相邻的绝对值更大的整数
- 如果参数的小数部分小于0.5,四舍五入到相邻的绝对值更小的整数
- 如果参数的小数部分等于0.5,四舍五入到相邻的在正无穷(+∞)方向上的整数。
- 例:
- x=Math.round(2019.49) ; //2019
- x=Math.round(2019.5); //2020
- x=Math.round(-2019.5); //-2019
- x=Math.round(-2019.51); //-2020
- Typeof数据检测:
- 匹配整数的正则表达式为:
- (-?[1-9]\d*)|0
- 字符串 "YONYOU",有几种不同的全排列方式?
- 180
- 如果六个字母不同则有A66 种方法
- 但有两个字母重复,一个字母重复是除以2,两个就是A66 /4=180
- 用数组 M[0..N-1] 用来表示一个循环队列, FRONT 指向队头元素,REAR 指向队尾元素的后一个位置,则当前队列中的元素个数是几个?(注:队列总的元素数不会超过队列大小)
- (rear-front+n)%n
- 因为是循环链表 rear不一定就比front地址高 所以有可能rear-fornt得到结果是负数 所以为了正确性起见需要+n再%n
- 在n个有序顺序表中插入一个新元素,并保持原来的顺序不变,平均要移动的元素次数是n/2
- 文件传输使用的协议是FTP
- 信号传输速率单位一般为:b/s
- 退出交互模式的Shell,应键入exit
- 在MYSQL数据库中,以下哪条语句用于统计BOOK表中的记录总数?
- select count(*) from book;
- 软件的单位缺陷数是基于产品的总体测试总数计算的。单位缺陷数=缺陷总数/软件产品总数
- 关于使用link和@import,说法正确的是:
- 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载
- @import就只能加载CSS ,link标签还可以定义RSS等
- import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题
- text-overflow: ellipsis属性可以使超出的文字部分变成”…”
- 符号所表示的意义解释正确的是:
- ˆ(尖号)匹配字符串的开头
- $(美元符号)匹配字符串的结尾
- \(反斜杠)对特殊字符的特殊元字符含义进行转义
- 属于javascript中查找元素的方法的是:
- getElementsByTagName()
- getElementById()
- getElementsByName()
- 关于HttpCode说法正确的是:
- 200:请求被正常处理
- 204:请求被受理但没有资源可以返回
- 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
- 301:永久性重定向
- 302:临时重定向
- 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
- 304:发送附带条件的请求时,条件不满足时返回,与重定向无关
- 307:临时重定向,与302类似,只是强制要求使用POST方法
- 400:请求报文语法有误,服务器无法识别
- 401:请求需要认证
- 403:请求的对应资源禁止被访问
- 404:服务器无法找到对应资源
- 500:服务器内部错误
- 502:服务器挂了
- 503:服务器正忙
- push方法是向数组末尾添加一个或者多个元素,并返回新的长度
- pop方法删除数组的最后一个元素,把数组的长度减1,并且返回它被删除元素的值,如果数组变为空,则该方法不改变数组,返回undefine值
- unshift()方法是向数组的开头添加一个或多个元素,并且返回新的长度
- shift()方法和unshift()方法恰恰相反。该方法用于把数组的第一个元素从其中删除,并返回被删除的值。如果数组是空的,shift()方法将不进行任何操作,返回undefined的值。
- join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
- 关于position定位,下列说法正确的是:
- fixed元素,可定位于相对于浏览器窗口的指定坐标,它始终是以 body 为依据
- absolute 的元素,如果它的 父容器设置了 position 属性,并且 position 的属性值为 absolute 或者 relative,那么就会依据父容器进行偏移
- fixed 属性的元素在标准流中不占位置
- 绝对定位和固定定位会脱离标准文档流 相对定位不会
- 关于浮动元素,下面说法正确的是:
- 如果有多个浮动元素,浮动元素会按顺序排下来而不会发生重叠的现象
- 浮动元素会尽可能地向顶端对齐、向左或向右对齐
- 如果有非浮动元素和浮动元素同时存在,并且非浮动元素在前,则浮动元素不会高于非浮动元素
- 设置display:none后的元素会导致浏览器重排和重绘
- 设置visibility:hidde后的元素只会导致浏览器重绘而不会重排
- 设置元素opacity:0之后,也可以触发点击事件
- visibility:hidden的元素无法触发其点击事件
- Linux系统中建立一个新文件可以使用touch(指令改变档案的时间记录)命令
- 螺旋模型引入了“风险驱动”的思想,适用于大规模的内部开发项目
- 运算中,如果是数字与字符串的加法运算,那么数字会被转化为字符串,进行字符串拼接 其他运算的时候,字符串会被转化为数字,然后进行运算
- AMD和CMD都是浏览器端的js模块化规范,分别由require.js和sea.js实现。 CommonJS是服务器端的js模块化规范,由NodeJS实现。
- 行级元素(内联元素)
- 元素特点:
- 内容决定所站位置
- 不可以通过css改变宽高
- 语法格式:
|
|
- 代表元素:
|
|
- 块级元素
- 元素特点:
- 独占一行
- 可以通过css改变宽高
- 语法格式:
|
|
- 代表元素:
|
|
- 行级块元素
- 元素特点:
- 内容决定所站位置
- 可以通过css改变宽高
- 语法格式:
|
|
- 代表元素:
- 复制代码
|
|
- 物理层:
中继器,集线器,双绞线
数据链路层:
网桥,以太网交换机,网卡(一半物理层,一半数据链路层)
网络层:
路由器,三层交换机
传输层:
四层交换机(常用作负载均衡),网关:对高层协议(包括传输层及更高层次)进行转换的网间连接器
- 具有n个节点的完全二叉树的深度为(log2n+1) (向下取整)
- 与编译系统相比,解释系统比较简单 , 可移植性好 , 执行速度慢
- 在DB技术,未提交的随后被撤消了的数据,称为(脏数据 )。
- 编译就是要把高级语言的源程序翻译成目标程序的过程。一般整个过程可划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。中间代码生成和代码优化不是必须经过的阶段。
中间代码生成阶段要在语法和语义分析的基础上,将源程序进一步变为一种 内部表示形式,它通常易于生成、易于翻译成目标代码,不过不是所有的语 言都必须经过这一步。代码优化阶段,对前阶段生成的中间代码进行变换或 改造,以便生成目标代码时更加节省时间和空间,这一工作也不是必须的。
- 在一个文件被用户进程首次打开的过程中,操作系统需做的是:将文件控制块读到内存中。
- 确定测试计划是在 ( 总体设计) 阶段制定的
- 线性表的顺序存储结构是一种随机存取的存储结构
- 页面响应式布局:使用bootsrap框架和利用media query媒体查询功能
- new操作符,做了哪些事情
- 创建一个新对象
- 将构造函数的this指向这个新对象 – call,apply皆可
- 原型链继承
- 返回新对象
- 简述cookie/session记住登录状态机制原理
- cookie(客户端的状态保存机制)
- 用户登录验证成功后,如果是使用 Cookie 记住登录状态,则客户端会将用户名等信息放在响应头的 Set-Cookie 属性中返回给服务器,之后的 HTTP 请求都会携带这个 Cookie ,实现记住登录。
- session(服务端的状态保存机制)
- 用户登录验证成功后,如果是 session 的话,则服务器会将用户名等信息存放在本地,再随机生成一个登录标识通过 Cookie 返回给浏览器,之后浏览器每次发送请求也会携带这个 Cookie,服务器收到后便通过这个标识得到已登录的用户信息。
- 网页中接收事件的顺序(事件流)有哪些?它们之间的区别是什么?
- 事件冒泡
- 又叫:IE的事件流,即事件从最深的那个节点接收,逐级向上传播到document,
- 举个例子:大概顺序为div-body-html-document,
- 事件捕获
- 主要含义:最不具体的节点应该最先接收到事件,即为了在事件到达最终目标前拦截事件。
- 举个例子:大概顺序为document-html-body-div
- DOM事件流
- 分为三个阶段:事件捕获、到达目的和事件冒泡
- css属性position都有哪些值?
- absolute,相对于最近一层定位元素
relative,相对于自身的位置(未脱标)
fixed,相对于浏览器窗口
static,没有定位
sticky,粘性布局,
position:sticky是css定位新增属性;可以说是static(没有定位) 和 固定定位fixed 的结合;它主要用在对 scroll 事件的监听上;简单来说,在滑动过程中,某个元素距离其父元素的距离达到 sticky 粘性定位的要求时(比如top: 100px);position:sticky这时的效果相当于fixed定位,固定到适当位置
inherit,继承父亲
initial,初始static
- HTTP控制访问(CORS)
- 同源:协议、域名、端口三者保持一致
- AJAX请求时,浏览器要求当前网页和server必须同源
- 所有的跨域,都必须经过server端的允许和配合
- CORS是什么?
CORS是“跨域资源共享”,允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服AJAX只能同源使用的限制。
HTTP控制访问(CORS):
当浏览器发现请求是跨域,那么会自动拦截,给http header添加origin字段
origin字段用来说明本次请求来自哪个源(协议+域名+端口)
服务器收到浏览器发送的请求后,如果Origin指定的源不在许可范围则返回一个正常http响应。
如果浏览器发现响应的头信息不包含Access-Control-Allow-Origin字段,则抛出错误,被XMLHttpRequest的onerror回调函数捕获。(注意:这种错误无法通过状态码识别)
服务器收到浏览器发送的请求后,如果Origin在许可范围内,服务器返回的响应会多出几个头信息字段
Access-Control-Allow-Origin:
Access-Control-Allow-Credentials:
Access-Control-Expose-Headers:
Content-Type
application/x-www-form-urlencoded(简单请求)
multipart/form-data(简单请求)
text/plain(简单请求)
text/html; charset=utf-8
application/json
补充:跨域请求有两种形式:一是简单请求,二是非简单请求
如果为非简单请求,那么在正式通信之前增加一次HTTP查询请求,称为“预检”请求(preflight)
浏览器先会询问服务器,当前网页所在的域名是否在服务器的许可名单中,以及可以使用哪些HTTP动词和头信息字段。
预检请求使用的请求方法是OPTIONS,表示这个请求是用来询问的。预检请求包含头信息:
Access-Control-Request-Method:浏览器的CORS会使用到哪些HTTP方法
Access-Control-Request-Headers:指定浏览器CORS请求会额外发送的头信息字段
如果服务器否定了预检请求,返回一个正常HTTP响应,但是没有任何关于CORS的头信息字段,因此触发一个错误被XMLHttpRequest对象的onerror回调函数捕获
如果服务器肯定了预检请求,则回应的CORS相关字段为:
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000
之后过程就和简单请求的流程一致了。
补充:
CORS与JSONP对比
CORS比JSONP更强大,因为JSONP只支持GET请求,CORS支持所有类型HTTP请求;
JSONP支持老式浏览器,以及可以向不支持CORS的网站请求数据
- 请列举几种除了px外的CSS度量单位并解释其含义。
- rem 相对于根字体大小的单位,比如可以设置 1rem=50px
2. em 相对于font-size,比如font-size:16px(浏览器默认),则2em=32px
3. vm 即viewpoint width,视窗宽度,比如1vm的宽度为相对于视窗的宽度的百分之一
4. vh 即viewpoint height ,同上
交换机工作在OSI七层的第二层?- BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与,
- 哪些情况会产生BFC:
- 根元素
- float属性不为none
- position为absolute或fixed
- display为inline-block, table-cell, table-caption, flex, inline-flex
- overflow不为visible
- JS里的function能访问它们的
- 参数
- 局部变量或函数
- 全局变量
- 外部函数的变量或函数
- 以下对call() 和 apply() 说法哪些是正确的
- apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组;
- 如果第一个参数是null,则使用全局对象代替;
- call和apply的意思一样,只不过是参数列表不一样.
- 通过apply可以将数组装换为参数列表的集合
- 对闭包(closure)理解正确的有:
- 闭包是指有权访问另一个函数作用域中变量的函数;
- 函数内再嵌套函数,返回到外部形成闭包;
- 内部函数可以引用外层的参数和变量
- 参数和变量不会被垃圾回收机制回收
- 盒子模型包括四部分:内容,填充,边框,边界
- Cookie SessionStorage LocalStorage的2个共同点:都保存在浏览器端, 同源。
- 以下哪些存储方式可以实现浏览器内多个标签页之间通信?
- localStorage
- cookie
- indexedDB
- 有关会话跟踪技术描述正确的是
- Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
- 关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
- 隐藏表单域在客户端不可见,但可以获取到此表单的属性值
- 在禁用Cookie时可以使用URL重写技术跟踪会话
- 关于JavaScript里的xml处理,以下说法正确的是:
- Xml一般用于传输和存储数据,是对html的补充,两者的目的不同
- 在JavaScript里解析和处理xml数据时,因为浏览器的不同,其做法也不同
- 在IE浏览器里处理xml,首先需要创建ActiveXObject对象
- this对象的理解正确的是 :
- 在不手动改变this指向的前提下,this总是指向函数的直接调用对象
- 如果有new关键字,this指向new出来的那个对象
- IE中attachEvent中的this总是指向全局对象window
- 请列出 input 标签的 type 属性都可以设置哪些值:
text、radio、checkbox、hidden、range、reset、file、button、submit、password、image、color、date、datetime-local、month、week、time、email、number、search、tel、url
- 数据和 UI 的双向绑定和单向绑定有什么区别。
- 单向绑定使得数据流也是单向的,对于复杂应用来说这是实施统一的状态管理的前提;双向绑定在一些需要实时反应用户输入的场合
说说 React 中 state 和 props 的区别是什么。
- state是管理组件内部的一些数据,props则是从父组件传递过来的数据或者属性
- javaScript 中改变 this 关键字指向都有哪些方式。:call、apply、bind、箭头函数,将对象上的函数赋值到其他变量中(this 丢失)。
viewport 有width、height、user-scalable等属性;其中Initial-scale属性为:设置页面的初始缩放值,为一个数字,可以带小数。- get:一般用于查询数据,使用URL传递参数;发送信息的数量有限制;post:所发送的数据的大小理论上是没有限制,post 可以发送纯文本、URL编码格式、二进制格式的字符串
- 简述浏览器发起一个网络请求(HTTP请求事务)后,都经历了哪些步骤:
- 域名解析 -->
- 发起TCP的3次握手 -->
- 建立TCP连接后发起http请求 -->
- 服务器响应http请求,浏览器得到html代码 -->
- 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) -->
浏览器对页面进行渲染呈现给用户
- 下列哪些是与数据库管理相关的技术:
- RDBMS:(Relational Database Management System)关系数据库管理系统
- NoSQL:非关系型的数据库
- NewSQL:新型关系型数据库
- HBase:是一个分布式的面向列的数据库
- ActiveMQ:Apache下的一个中间件
- Nginx:是一个高性能的HTTP和反向***web服务器,同时也提供了IMAP/POP3/SMTP服务
- 下面哪些产品或技术支持WEB应用的部署和运行:
- WebSphere
- Jetty
- NodeJS
- 下面哪些技术是用来处理XML文件的技术
- DOM
- STAX
- SAX
- 关于HTTP,下面哪些描述是准确的:
- HTTP是建立在TCP协议之上的应用层协议
- HTTP是基于请求/响应模型设计的协议
- HTTP协议是一种明文协议,不够安全
- HTTP协议支持多种方法,如HEAD, DELETE, PUT, TRACE, GET,POST
- 下列关于操作系统进程与线程的区别正确的是:
- 进程是资源分配的基本单位
- 线程是资源调度的基本单位
- 算法
- 在操作系统的内存管理中,有一类很重要的算法就是内存页面置换算法(包括FIFO,LRU,LFU等几种常见页面置换算法)。事实上,Cache算法和内存页面置换算法的核心思想是一样的:都是在给定一个限定大小的空间的前提下,设计一个原则如何来更新和访问其中的元素。
- LRU全称是Least Recently Used,即最近最久未使用的意思。 下面说一下LRU算法的核心思想,LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。
- FIFO(First in First out),先进先出。在FIFO Cache设计中,核心原则就是: 如果一个数据最先进入缓存中,则应该最早淘汰掉 。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰掉。
- LFU(Least Frequently Used)最近最少使用算法。它是基于“如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小”的思路。
- 注意LFU和LRU算法的不同之处,LRU的淘汰规则是基于访问时间,而LFU是基于访问次数的。
- 下列排序算法不稳定的有?
- 希尔排序
- 堆排序
- 快速排序
- 选择排序
- 插入排序、冒泡排序、归并排序稳定
1. get方式
1.1 数据会拼接在url地址的后面?username=hcc&password=123456
1.2 地址栏有长度限制,因此get方式提交数据大小不会超过4k
2. post方式
2.1 数据不会在url中显示,相比get方式,post更安全
2.2 提交的数据没有大小限制
根据HTTP规范,GET用于信息获取,POST表示可能修改变服务器上的资源的请求
- http协议
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和服务器之间互相通信的规则,HTTP协议分为请求 和响应 两个部分组成。
- 严格模式下禁止this关键字指向全局对象。
- NOSCRIPT标签是做什么用的:用来定义在脚本未被执行时的替代内容
- angularjs1中指令中的compile参数是在什么时候运行的?在生成DOM后扫描并生成
- angularjs1使用了mvc进行web开发,其中控制层一般用javascript
- 语言来定义
1. HTTP中POST、GET、PUT、DELETE方式的区别
常用的post,get,delete,不常用的copy,head,link等
- get通过url传递参数
- Post设置请求头,规定请求数据类型
- Post比get更加安全(因为post参数在请求头中,get在url中)
- Get传输速度比post快,根据参数决定(post通过请求体传参,后台通过数据流接受,速度稍微慢一点,而get通过url传参,可以直接获取)
- Post传输文件大,理论上没有限制。Get传输文件小,大概在7-8k
- Get获取数据,post上传数据(上传的数据比较多,而且上传数据是重要的数据,所以不论安全性还是数据量级,post是最好的选择)
- Put请求时向服务器端发送数据,从而改变信息,该请求就像数据库的update一样,用来修改数据的内容,但是不会增加数据的种类,也就是说无论进行多少次put操作,其结果都是一样的。
- Delete:是用来删除某一个资源。
2. 常见的HTTP状态码[举例3种并说明含义]
一.200:服务器已经成功处理了请求。
二.304:自从上次请求之后,请求的网页未进行修改,服务器返回次响应是,不会返回网页的内容。
三.404:服务器找不到请求的网页
四:500:服务器遇到错误,无法完成请求。
3. PHP中,语句include和require的区别是什么?为避免多次包含同一文件,可以用(?)语句代替他们
1、PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。
2、PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
3、require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行
4、include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行
5、推荐使用require_once()和include_once(),可以检测文件是否有重复包含。
4. PHP语言中,isset、empty、is_null的区别
5. 数据库中的事务是什么?
事务是数据库中最小的单元,把多个事件当成一个来处理,是一组不可以在进行分割的操作集合。
特性:(原子性,一致性,持久性,隔离性)
原子性:原子性是指事务中包含的操作要么成功,要么失败。
一致性:事务执行的前后都必须一致。
持久性:是指一个事务一旦提交,对数据库中的改变是永久的。
隔离性:数据库开启的每一个事务,不能被其他的事务干扰。
7. PHP中常用的超全局变量
- $_SERVER
$_SERVER超级全局变量包括由webserver创建的信息。它提供了server和客户配置及当前请求环境的有关信息。依据server不同,$_SERVER中的变量值和变量个数会有区别,只是一般都能够找到CGI1.1规范中定义的变量。当中包括:
$_SERVER[ 'HTTP_REFERER' ] ; 引导用户到达当前位置的页面的URL ;
$_SERVER[ 'REMOTE_ADDR‘ ] ; 客户IP地址 。
$_SERVER[ ’REQUEST_URI‘ ] ; URL的路径部分。
$_SERVER[ 'HTTP_USER_AGENT' ] ; 客户的用户代理。通常会提供操作系统和浏览器的有关信息。
- 2、$_GET
$_GET超级全局变量包括使用GET方法传递的參数的有关信息。
3、$_POST
$_POST超级全局变量包括用POST方法传递的參数的有关信息。
<form caction="subscribe.php" method = "post">
<p>
Email address : <br>
<input type="text" name="email" size="20" maxlength="so" value="">
</p>
<p>
Password : <br>
<input type="password" name="pswd" size="20" maxlength="15" value="">
</p>
<p>
<input type="submit" name="subscribe" value="subscribe!">
</p>
</form>
通过脚本subscribe.php,就能够使用以下的POST变量:
$_POST[ 'email' ] = " jason@example.com " ;
$_POST[ 'pswd' ] = "rainyday" ;
$_POST[ 'subscribe' ] = "subscribe!" ;
与$_GET一样。在默认情况下,$_POST超级全局变量是訪问POST变量的唯一途径。
4、$_COOKIE
$_COOKIE超级全局变量存储了通过HTTP cookie传递到脚本的信息。
这些cookie通常是由曾经运行的PHP脚本通过PHP函数setcookie ( ) 设置的。比如,如果使用 setcookie ( )存储了一个名为 example.com、值为ab2213的cookie。以后就能够通过调用$_COOKIE[ ' example.com' ]来获得这个值。
5、$_FILES
$_FILES超级全局变量包括通过POST方法向server上传的数据的有关信息。这个超级全局变量与其它的变量有所不同。它是一个二维数组,包括5个元素。第一个下标标示表单的文件上传元素名;第二个下标是五个提前定义下标之中的一个,这些下标描写叙述了上传文件的某个属性:
△ $_FILES[ 'upload-name' ][ 'name' ]; 从client向server上传文件的文件名称。
△ $_FILES[ 'upload-name' ][ 'type' ]; 上传文件的MIME类型。这个变量是否赋值取决于浏览器的功能。
△ $_FILES[ 'upload-name' ][ 'size' ]; 上传文件的大小(以字节为单位);
△ $_FILES[ 'upload-name' ][ 'tmp_name' ]; 上传之后,将此文件移到终于位置之前赋予的暂时名。
△ $_FILES[ 'upload-name' ][ 'error' ]; 上传状态码。
虽然这个变量的名为 error ,但实际上在成功的情况下也会填写这个变量。它有五个可能的值:
■ UPLOAD_ERR_OK 文件成功上传
■ UPLOAD_ERR_INI_SIZE 文件大小超出了 upload_max_filesize 指令所指定的最大值。
■ UPLOAD_ERR_FORM_SIZE 文件大小超出了MAX_FILE_SIZE 隐藏表单域參数(可选)指定的最大值。
■ UPLOAD_ERR_PARTIAL 文件仅仅上传了一部分
■ UPLOAD_ERR_NO_FILE 上传表单中没有指定文件
6、$_ENV
$_ENV超级全局变量提供PHP解析所在server环境的有关信息。此数组中的变量包含:
△ $_ENV[ 'HOSTNAME' ] server的主机名
△ $_ENV[ 'SHELL' ] 系统 shell
7、$_REQUEST
$_REQUEST超级全局变量是一个全能选手。它记录了通过各种方法传递给脚本的变量,特别是GET ,POST 和 COOKIE 。
这些变量的顺序不依赖于它们在发送脚本中出现的顺序,而是依赖于 variables_order 配置指令所指定的顺序。建议少用这个超级变量。由于它不够安全。
8、$_SESSION
$_SESSION 超级全局变量包括与全部会话有关的信息。
注冊会话信息能为你提供便利,这样就能在整个站点中引用这些会话信息。而无需通过GET或POST显示的传递数据。
9、$GLOBALS
$GLOBALS 超级全局变量数组能够觉得是超级全局变量的超集,包括全局作用域内的全部变量。运行以下的代码能够查看$GLOBALS 中全部的变量。
print ' <pre>' ;
print_r ($GLOBALS);
print ' </pre>' ;
8. 简单介绍下常用的 HTML 元素
常用的有html,head,title,meta,body,h1~h6,p,br,ul,div,li,span
9. 浏览器页面有哪三层构成,分别是什么,作用是什么?
构成:结构层、表示层、行为层。
分别是:html、css、javascript
作用:html实现页面结构、css实现页面表现和风格、javascript实现一些客户端的功能与业务。
- 如何实现浏览器内多个标签页之间的通信?
使用本地存储localstorge,
11. CSS选择器的类型有哪些,并举几个例子说明其用法?
1、id
#id{
}
- Class
.class{
}
- 标签
p {
}
- 通用
* {
}
- 伪类
a:hover{
}
- 伪元素
a::after,a::before{
}
7、子选择器、相邻兄弟选择器
.class a,.class+.class1{
}
12. CSS中隐藏元素的方式有哪些?
- Display:none()
- visibility:hidden;
- Overflow:hidden;
- Opacity:0;
13. tcp三次握手,一句话概括
A向服务器(S)发起请求,A再收到S发送的响应的信息
14. http常用请求头
1、accept:可接受的响应内容(Content-type)
2、Connection:客户端(浏览器)想要优先使用的连接的类型
3、Cookie:http协议的cookie
4、Conten-length:八进制的请求体的长度
5、Authorization:用于表示http协议中需要认证资源的认证信息
15. CSS中 line-height和height的区别
Line-height:元素内部文字的行高
Height:元素自身的高度