• 面试题(weiyi)


    基础题:

    1、基本类型和引用类型的值?

    基本类型:Null, Undefined, Boolean, Number, String

    引用类型:Object, Array, Date, RegExp, Function, 基本包装类型(3个特殊的引用类型Boolean、Number 和String)

    2、Array有哪些方法?

    转换方法:toLocaleString()、toString()、valueOf()、join()    其中是所有对象都有的方法

    栈方法:push()、pop()

    队列方法:shift()、unshift()

    重排序方法:reverse()、sort()

    操作方法:concat()、slice()、splice()

    位置方法:indexOf()、lastIndexOf()

    迭代方法:every()、filter()、forEach()、map()、some()

    归并方法:reduce()、reduceRight()

    ES6新增判断array的方法 Array.isArray()

    3、常见的http请求返回码?

    1xx:信息响应类,表示接收到请求并且继续处理
    2xx:处理成功响应类,表示动作被成功接收、理解和接受
    3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
    4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
    5xx:服务端错误,服务器不能正确执行一个正确的请求

    200:请求成功,返回页面

    201:请求成功,没有返回任何内容

    301:请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。

    302:请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。
    304:如果网页自请求者上次请求后没有更新,则用304代码告诉搜索引擎机器人,可节省带宽和开销
    400:服务器不理解请求的语法。

    403:服务器拒绝请求

    404:服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。

    410 :请求的资源永久删除后,服务器返回此响应。

    500 :服务器遇到错误,无法完成请求。

    503:服务器目前无法使用(由于超载或停机维护)。

    4、七层模型和五层架构是什么(按顺序讲述)?

    七层:从上到下

    应用层: 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

    表示层:数据格式化,代码转换,数据加密没有协议
    会话层:解除或建立与别的接点的联系 没有协议
    传输层:提供端对端的接口 TCP,UDP
    网络层:为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
    数据链路层:传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
    物理层:以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
     
    五层:
      应用层
      传输层
      网络层
      数据链路层
      物理层
    详解见:
    5、水平居中和垂直居中?
    CSS水平居中和垂直居中的终极解决方案:
    一、CSS的水平居中

    css水平居中有大致有以下三种情况:
    1.文本、图片等行内元素:

    给父元素添加属性:text-align:center;
    2.确定宽度的块级元素:

    添加属性:margin-left:auto;margin-right:auto;
    3.不确定宽度的块级元素:

    有三种处理方法:
    a.把块级元素display:inline;变成行内元素,然后使用text-align:center实现。
    b.把块级元素设置display: table;margin:0 auto
    c.给父元素设置float,然后给父元素设置position:relative;left:50%,子元素设置position:relative;left:-50%。
    二、CSS的垂直居中

    css垂直居中也大致有三种情况:
    1.父元素高度确定,单行文本:

    可以设置line-hight值等于其高度值实现;
    2.父元素高度确定的多行文本、图片:

    两种处理方法:
    a.将它们包含在table标签中,td标签默认拥有属性vertical-align:middle;
    b.给父元素添加属性:display:table-cell;vertical-align:middle;
    3.父元素高度不确定的文本、图片:

    给父元素设置相同的上下内边距:padding-top:10px;padding-bottom:10px;
    对于脑残的IE6/7可能还要单独的加hack,给父元素设置position:absolute;top:50%;给子元素设置position:relative;top:-50%;
    6、浏览器缓存机制?

    那么浏览器缓存机制到底是如何工作的呢?核心就是把缓存的内容保存在了本地,而不用每次都向服务端发送相同的请求,设想下每次都打开相同的页面,而在第一次打开的同时,将下载的js、css、图片等“保存”在了本地,而之后的请求每次都在本地读取,效率是不是高了很多?真正的浏览器工作的时候并不是将完整的内容保存在本地,各种浏览器都有不同的方式,譬如firefox是一种类似innodb的方式存储的key value 的模式,在地址栏中输入 about:cache 可以看见缓存的文件,chrome会把缓存的文件保存在一个叫User Data的文件夹下。但是如果每次都读取缓存也会存在一定的问题,如果服务端的文件更新了呢?这时服务端就会和客户端约定一个有效期,譬如说服务端告诉客户端1天内我服务端的文件不会更新,你就放心地读取缓存吧,于是在这一天里每次遇到相同的请求客户端都开心地可以读取缓存里的文件。但是如果一天过去了,客户端又要读取该文件了,发现和服务端约定的有效期过了,于是就会向服务端发送请求,试图下载一个新的文件,但是很有可能服务端的文件其实并没有更新,其实还是可以读取缓存的。这时该怎么判断服务端的文件有没有更新呢?有两种方式,第一种在上一次服务端告诉客户端约定的有效期的同时,告诉客户端该文件最后修改的时间,当再次试图从服务端下载该文件的时候,check下该文件有没有更新(对比最后修改时间),如果没有,则读取缓存;第二种方式是在上一次服务端告诉客户端约定有效期的同时,同时告诉客户端该文件的版本号,当服务端文件更新的时候,改变版本号,再次发送请求的时候check一下版本号是否一致就行了,如一致,则可直接读取缓存。

    而事实上真正的浏览器缓存机制大抵也是如此,接下来就可以分别对号入座了。

    需要注意的是,浏览器会在第一次请求完服务器后得到响应,我们可以在服务器中设置这些响应,从而达到在以后的请求中尽量减少甚至不从服务器获取资源的目的。浏览器是依靠请求和响应中的的头信息来控制缓存的

    http://www.alloyteam.com/2012/03/web-cache-1-web-cache-overview/

    http://blog.csdn.net/u012545279/article/details/17679061

    7、new一个对象的实质?
    用 var anObject = new aFunction() 形式创建对象的过程实际上可以分为三步: 

    第一步是建立一个新对象; 
    第二步将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象; 
    第三步就是将该对象作为this参数调用构造函数,完成成员设置等初始化工作。
  • 相关阅读:
    【EFCORE笔记】自动生成属性的显式值
    【EFCORE笔记】更新数据的多种方案
    【EFCORE笔记】添加数据的多种方案
    【EFCORE笔记】多租户系统的最佳实践
    【EFCORE笔记】全局查询筛选器
    【EFCORE笔记】异步查询&工作原理&注释标记
    【EFCORE笔记】执行原始SQL查询
    003_Redis后台启动(windows10与)
    Office 2010后 如何保存新的样式集
    Mysql启动 发生系统错误 1067
  • 原文地址:https://www.cnblogs.com/taryn/p/6549498.html
Copyright © 2020-2023  润新知