美文网首页
面试知识7(模拟面试)

面试知识7(模拟面试)

作者: stars甜 | 来源:发表于2017-07-14 00:42 被阅读0次

    一:node.js理解

    1:Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。也就是说Node.js是用来做后端的技术。nodejs是服务端的js平台。

    2:大量使用了使用事件驱动来实现异步开发。使用了一个事件驱动,非阻塞式的I/O模型此外,在实时的Web应用上采用了基于 WebSocket 的推送技术,客户端和服务器端都可以发起通信,能够自由地交换数据。非常优雅、实用的打通了前后端。

    3:NodeJS是异步单线程的,应用的是异步回调的方法,也就是异步的I/O

    解释:当进程执行的时候,不会等待结果的返回,而是直接执行下面的语句,直到进入事件循环,当数据库执行返回结果的时候会将事件发送到事件队列,等线程进入事件循环之后才会调用之前的回调函数。

    也就是nodejs的工作原理其实就是事件循环。每一条nodejs的逻辑都是写在回调函数里面的,而回调函数都是返回之后才异步执行的。

    4:NodeJS的应用场景

    NodeJs适合应用在具有大量的细小的http请求环境下,例如web的即时聊天程序,或者上万人同时在线的游戏服务器。不用考虑http请求次数过多的问题。

    二:Ajax获取数据时遇到乱码问题:

    1:中文乱码就是因为contentType没有指定编码

    解决:在jquery-1.6.1文件中,搜索’contentType’

               然后在application/x-www-form-urlencoded后面加上; charset=UTF-8

               最终变成contentType:”application/x-www-form-urlencoded; charset=UTF-8”即可。

    2:接收页面的编码问题

    解决:由于异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8编码进行              解码的。所以post方式的话,必须把这个页面另存一下,将页面文件的编码改为 UTF-8                (请务必记住)。

                编码函数encodeURIComponent(string)

    三:ajax异步提交的数据一般接收不到的原因

    ①:js里面的ajax代码的提交方式要和你目标地址的接受方式要一致,例如你在使用ajax提交数据的时候,使用的方法是get方法进行提交的,并且提交地址为b.PHP文件里面的test方法,那么当你在b.php页面test方法下进行接收ajax异步提交过来的数据时,也必须要get方法进行接收,否则你是接收不到数据的!反之post方法提交的情况亦然!

    ②:在ajax方法体中组织json数据时,json数据的name( 例子如{'name':'值'} )在进行选择时不要和本页面的其它已有的name雷同,特别是你这个ajax方法所在的函数上个调用的你的也有同样的name话,你当前的name是传递不过去的,

    四:json 和字符串转换

    1:$.parseJSON( obj)   转对象    jquery插件支持

    2:JSON.parse(jsonstr); json字符串转换成json对象

    3:JSON.stringify(jsonobj); json对象转换成json对符串

    3:eval('(' + jsonstr + ')'); json字符串转换成json对象,注意需要在json字符外包裹一对小括号

    五:把js字符串转化为可执行的程序(解析为对象)

    1:eval()

               var dataObj=eval("("+data+")");//

              为什么要 eval这里要添加 “("("+data+")");//”呢?

             原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

              加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行

    2:data =(new Function("","return "+json))();

    六:url有哪些部分

    http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

    从上面的URL可以看出,一个完整的URL包括以下几部分:

    1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符

    2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用

    3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

    4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

    5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

    6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

    7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

    七:瀑布流实现原理

    瀑布流可以有多列,每一个item(单元格)的高度可以不相同,但是宽度必须一样.排列的方式是,从左往右排列,哪一列现在的总高度最小,就优先排序把item(单元格)放在这一列.这样排完所有的单元格后,可以保证每一列的总高度都相差不大

    先通过计算出一排能够容纳几列元素,然后寻找各列之中所有元素高度之和的最小者,并将新的元素添加到该列上,然后继续寻找所有列的各元素之和的最小者,继续添加至该列上,如此循环下去,直至所有元素均能够按要求排列为止;

    八:不确定宽高的图片水平垂直居中

    方法一:

    方法二:

    j

    九:相同代码量 网页加载速度不同:

    可以在不同的地区的服务器上都放一份

    十:angular数据绑定策略

    1:@绑定:传递一个字符串作为属性的值

    2;=绑定:指定获取属性的类型为父作用域的属性

    3:&绑定:传递的是父作用域中的函数

    十一:form一次提交多个文件

    1:input type="file" name="img"multiple="multiple"

    2:用ajax中formdata

    相关文章

      网友评论

          本文标题:面试知识7(模拟面试)

          本文链接:https://www.haomeiwen.com/subject/bcpghxtx.html