前端面试题杂烩part4

2023-10-19 02:08

本文主要是介绍前端面试题杂烩part4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录(?)[+]

这里写链接内容

知乎上一个前端面试题答案的解答:
https://www.zhihu.com/question/19568008

MicroMao ,代码诗人小毛
88 人赞同
自己总结的面试题,感兴趣的看下。
HTML+CSS
1、盒子模型,块级元素和行内元素特性与区别。
2、行内块的使用,兼容性解决。
3、清除浮动的方式以及各自的优劣。
4、文档流的概念、定位的理解以及z-index计算规则&浏览器差异性。
5、CSS选择器以及优先级计算。
6、常用的CSS hack。
7、遇到的兼容性问题与解决方法。
8、垂直水平居中的实现方式。
9、常用布局的实现(两列布局、三列适应布局,两列等高适应布局等)。
JavaScript
1、犀牛书封面的犀牛属于神马品种?(蛋逼活跃气氛用。。。)
2、常用的浏览器内核。
3、常用的DOM操作,新建、添加、删除、移动、查找等。
4、String于Array常用方法。
5、设备与平台监测。
6、DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。
7、jQuery的bind、live、on、delegate的区别(考察点与上一条重叠,切入点不同)。
8、JS变量提升、匿名函数、原型继承、作用域、闭包机制等。
9、对HTTP协议的理解。
10、Ajax的常用操作,JS跨域的实现原理。

**

2、常用的浏览器内核。

作者:heqian
链接:https://www.zhihu.com/question/41807413/answer/92413711
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

一、Trident内核代表产品Internet Explorer,又称其为IE内核
Trident(又称为MSHTML),是微软开发的一种排版引擎。使用Trident渲染引擎的浏览器包括:IE、傲游、世界之窗浏览器、Avant、腾讯TT、Netscape 8、NetCaptor、Sleipnir、GOSURF、GreenBrowser和KKman等。
二、Gecko内核代表作品Mozilla
FirefoxGecko是一套开放源代码的、以C++编写的网页排版引擎。Gecko是最流行的排版引擎之一,仅次于Trident。使用它的最著名浏览器有Firefox、Netscape6至9。
三、WebKit内核代表作品Safari、Chromewebkit
是一个开源项目,包含了来自KDE项目和苹果公司的一些组件,主要用于Mac OS系统,它的特点在于源码结构清晰、渲染速度极快。缺点是对网页代码的兼容性不高,导致一些编写不标准的网页无法正常显示。主要代表作品有Safari和Google的浏览器Chrome。
四、Presto内核代表作品OperaPresto
是由Opera Software开发的浏览器排版引擎,供Opera 7.0及以上使用。它取代了旧版Opera 4至6版本使用的Elektra排版引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。

3、常用的DOM操作,新建、添加、删除、移动、查找等。

http://blog.sina.com.cn/s/blog_49fa034d0101gg7m.html
(1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement_x_x() //创建一个具体的元素
createTextNode() //创建一个文本节点
(2)添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore()
(3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性

1.创建元素节点
document.createElement_x_x() 方法 用于创建元素,接受一个参数,即要创建元素的标签名,返回创建的元素节点
1 var div = document.createElement_x_x(“div”); //创建一个div元素
2 div.id = “myDiv”; //设置div的id
3 div.className = “box”; //设置div的class
创建元素后还要把元素添加到文档树中
2.添加元素节点
appendChild() 方法 用于向childNodes列表的末尾添加一个节点,返回要添加的元素节点
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var li = document.createElement_x_x(“li”); //创建li
3 li.innerHTML = “项目四”; //向li内添加文本
4 ul.appendChild(li); //把li 添加到ul子节点的末尾

appendChild() 方法还可以添加已经存在的元素,会将元素从原来的位置移到新的位置
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

insertBefore() 方法,如果不是在末尾插入节点,而是想放在特定的位置上,用这个方法,该方法接受2个参数,第一个是要插入的节点,第二个是参照节点,返回要添加的元素节点
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var li = document.createElement_x_x(“li”); //创建li
3 li.innerHTML= “项目四”; //向li内添加文本
4 ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一个子节点前

1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var li = document.createElement_x_x(“li”); //创建li
3 li.innerHTML= “项目四”; //向li内添加文本
4 ul.insertBefore(li,ul.lastChild); //把li添加到ul的子节点末尾

1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var li = document.createElement_x_x(“li”); //创建li
3 li.innerHTML= “项目四”; //向li内添加文本
4 var lis = ul.getElementsByTagName_r(“li”) //获取ul中所有li的集合
5 ul.insertBefore(li,lis[1]);     //把li添加到ul中的第二个li节点前
添加后:
3.移除元素节点
removeChild() 方法,用于移除节点,接受一个参数,即要移除的节点,返回被移除的节点,注意被移除的节点仍然在文档中,不过文档中已没有其位置了
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一个子节点

1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var lis = ul.getElementsByTagName_r(“li”) //获取ul中所有li的集合
3 ul.removeChild(lis[0]);       //移除第一个li,与上面不同,要考虑浏览器之间的差异
4.替换元素节点
replaceChild() 方法,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要替换的节点,返回被替换的节点
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var fromFirstChild = ul.replaceChild(ul.firstChild); //替换ul第一个子节点

1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul;
2 var li = document.createElement_x_x(“li”); //创建li
3 li.innerHTML= “项目四”; //向li内添加文本
4 var lis = ul.getElementsByTagName_r(“li”) //获取ul中所有li的集合
5 var returnNode = ul.replaceChild(li,lis[1]); //用创建的li替换原来的第二个li
5.复制节点
cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)
1 var ul = document.getElementByIdx_xx_x(“myList”); //获得ul
2 var deepList = ul.cloneNode(true); //深复制
3 var shallowList = ul.cloneNode(false); //浅复制

4、String与Array常用方法。

http://www.jb51.net/article/47033.htm

  • Array
    • new Array()
    • new Array(len)
    • new Array(item0, item1, item2,….)
    • arr.concact(item1,item2…) ———-返回一个新数组,是将参数添加到原数组中构成的
    • arr.join(separator) ———将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符
    • arr.pop() ————删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
    • arr.push(item1,item2…) ———将参数添加到原数组末尾,并返回数组的长度
    • arr.reverse() ————–反序
    • arr.shift() ————移去第一个元素并返回其值
    • arr.slice(start, end) ———-返回数组对象的一个子集,索引从start开始(包括 start),到end结束(不包括end),原有数组不受影响. 当 start或者end为负数时,则使用他们加上length后地值. 如果end小于等于start,将返回空数组。
    • arr.sort(comparefn) ——–根据comparefn定义的大小比较函数,对一个数组进行排序。函数comparefn必须接受两个参数element1,element2,如果需要需要element1排在element2之前,应该返回一个负数;如果需要element1排在element2之后,应该返回一个正数,如果两个数平等对待(即保持原有顺序)则返回0。当省略comparefn时,则元素按照字典顺序排列
    • objArray.splice(start,deleteCount[,item1,item2[,…]]]) ————这是一个复杂的函数,用于完成数组元素的删除 取代和插入操作。其中,start参数表示要进行操作的索引位置,deleteCount指从start开始要删除的元素的元素个数(包括了start位置),如果deleteCount省略,则表示从start开始要删除数组的剩余部分。[,item1[,item2[,…]]]则表示可选的插入到start之前的元素列表
    • objArray.unshift(item1[,item2[,…]]]) ————将参数列表插入到数组的开头,并返回数组的长度 。其性质和push方法类型,但push方法是将元素添加到数组的结尾。如: [1,2,3,4].unshift(“a”,”b”)将得到[“a”,”b”,1,2,3,4]。

http://www.jb51.net/article/29547.htm

  • String

    • charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码。
      • strObj.charCodeAt(index)
      • 说明: index将被处理字符的从零开始计数的编号。有效值为0到字符串长度减1的数字。 如果指定位置没有字符,将返回NaN。
      • 例如:
      • var str = “ABC”;
        str.charCodeAt(0);
        结果:65
    • fromCharCode方法从一些Unicode字符串中返回一个字符串.
      • String.fromCharCode([code1[,code2…]])
      • 说明: code1,code2…是要转换为字符串的Unicode字符串序列。如果没有参数,结果为空字符串。
      • 例如:
      • String.fromCharCode(65,66,112);
      • 结果:ABp
    • charAt方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符
      • strObj.charAt(index)
      • 说明: index想得到的字符的基于零的索引。有效值是0与字符串长度减一之间的值。
      • 例如:
      • var str = “ABC”;
        str.charAt(1);
        结果:B
    • slice方法返回字符串的片段。
      • strObj.slice(start[,end])
      • 说明: start下标从0开始的strObj指定部分其实索引。如果start为负,将它作为length+start处理,此处length为字符串的长度。
        end小标从0开始的strObj指定部分结束索引。如果end为负,将它作为length+end处理,此处length为字符串的长度。
      • 例如:
        012345
        var str = “ABCDEF”;
        str.slice(2,4);
        结果:CD
    • substring方法返回位于String对象中指定位置的子字符串。

      • strObj.substring(start,end)
      • 说明: start指明子字符串的起始位置,该索引从0开始起算。
        end指明子字符串的结束位置,该索引从0开始起算。
        substring方法使用start和end两者中的较小值作为子字符串的起始点。如果start或end为NaN或者为负数,那么将其替换为0。
      • 例如:
        012345
        var str = “ABCDEF”;
        str.substring(2,4); // 或 str.substring(4,2);
        结果:CD
    • substr方法返回一个从指定位置开始的指定长度的子字符串。

      • strObj.substr(start[,length])
      • 说明: start所需的子字符串的起始位置。字符串中的第一个字符的索引为0。 length在返回的子字符串中应包括的字符个数。
      • 例如:
        012345
        var str = “ABCDEF”;
        str.substr(2,4);
        结果:CDEF
    • indexOf方法放回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。
      • strObj.indexOf(substr[,startIndex])
      • 说明: substr要在String对象中查找的子字符串。
        startIndex该整数值指出在String对象内开始查找的索引。如果省略,则从字符串的开始处查找。
      • 例如:
        01234567
        var str = “ABCDECDF”;
        str.indexOf(“CD”,1); // 由1位置从左向右查找 123…
        结果:2
    • lastIndexOf方法返回String对象中字符串最后出现的位置。如果没有匹配到子字符串,则返回-1。
      • strObj.lastIndexOf(substr[,startindex])
      • 说明:
        substr要在String对象内查找的子字符串。
        startindex该整数值指出在String对象内进行查找的开始索引位置。如果省略,则查找从字符串的末尾开始。
      • 例如:
        01234567
        var str = “ABCDECDF”;
        str.lastIndexOf(“CD”,6); // 由6位置从右向左查找 …456
        结果:5
    • search方法返回与正则表达式查找内容匹配的第一个字符串的位置。
      • strObj.search(reExp)
      • 说明:
        reExp包含正则表达式模式和可用标志的正则表达式对象。
      • 例如:
        var str = “ABCDECDF”;
        str.search(“CD”); // 或 str.search(/CD/i);
        结果:2
    • concat方法返回字符串值,该值包含了两个或多个提供的字符串的连接。
      • str.concat([string1[,string2…]])
      • 说明:
        string1,string2要和所有其他指定的字符串进行连接的String对象或文字。
      • 例如:
        var str = “ABCDEF”;
        str.concat(“ABCDEF”,”ABC”);
        结果:ABCDEFABCDEFABC
    • split将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
      • strObj.split([separator[,limit]])
      • 说明:
        separator字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
        limit该值用来限制返回数组中的元素个数。
      • 例如:
        var str = “AA BB CC DD EE FF”;
        alert(str.split(” “,3));
        结果:
        AA,BB,CC
    • toLowerCase方法返回一个字符串,该字符串中的字母被转换成小写。
      • 例如:
        var str = “ABCabc”;
        str.toLowerCase();
        结果:abcabc
    • toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。
      • 例如:
        var str = “ABCabc”;
        str.toUpperCase();
        结果:ABCABC

5、设备与平台监测。

http://www.cnblogs.com/wuyuchang/p/4248514.html

<code class="hljs avrasm has-numbering">//取得用户代理字符串 并全部小写。
var ua = navigator<span class="hljs-preprocessor">.userAgent</span><span class="hljs-preprocessor">.toLowerCase</span>()<span class="hljs-comment">;</span>
document<span class="hljs-preprocessor">.write</span>(ua)<span class="hljs-comment">;</span></code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li></ul>

1、识别呈现引擎
引擎主要包含四种:IE、Gecko、WebKit、Opera

2、识别浏览器
主流浏览器包含四种:IE、Chrome、Firefox、Opera

3、识别平台
主流平台包含三类:Windows、Mac、Unix

4、识别Windows操作系统
Windows操作系统包含:Windows 98、Window NT、Window XP、Window Vista、Windows 7…

5、识别移动设备
主流的移动设备包含三类:iPhone、iPod、Anroid、Nokia

6、识别游戏系统。
主流的游戏系统包含两类:Wii、PS3。

网上发现的比较简单的区分代码:

<code class="hljs lasso has-numbering"><span class="hljs-built_in">var</span> ua <span class="hljs-subst">=</span> navigator<span class="hljs-built_in">.</span>userAgent<span class="hljs-built_in">.</span>toLowerCase();
<span class="hljs-built_in">var</span> isStrict <span class="hljs-subst">=</span> document<span class="hljs-built_in">.</span>compatMode <span class="hljs-subst">==</span> <span class="hljs-string">"CSS1Compat"</span>
isOpera <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"opera"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isChrome <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"chrome"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isSafari <span class="hljs-subst">=</span> <span class="hljs-subst">!</span>isChrome <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; (/webkit<span class="hljs-subst">|</span>khtml<span class="hljs-subst">/</span>)<span class="hljs-built_in">.</span>test(ua)
isSafari3 <span class="hljs-subst">=</span> isSafari <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">'webkit/5'</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isIE <span class="hljs-subst">=</span> <span class="hljs-subst">!</span>isOpera <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"msie"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isIE7 <span class="hljs-subst">=</span> <span class="hljs-subst">!</span>isOpera <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"msie 7"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isIE8 <span class="hljs-subst">=</span> <span class="hljs-subst">!</span>isOpera <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"msie 8"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isGecko <span class="hljs-subst">=</span> <span class="hljs-subst">!</span>isSafari <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; <span class="hljs-subst">!</span>isChrome <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"gecko"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isGecko3 <span class="hljs-subst">=</span> isGecko <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"rv:1.9"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isBorderBox <span class="hljs-subst">=</span> isIE <span class="hljs-subst">&</span>amp;<span class="hljs-subst">&</span>amp; <span class="hljs-subst">!</span>isStrict  isWin7 <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"nt 6.1"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isVista <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"nt 6.0"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isWin2003 <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"nt 5.2"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isWinXp <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"nt 5.1"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isWin2000 <span class="hljs-subst">=</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"nt 5.0"</span>) <span class="hljs-subst">&</span><span class="hljs-literal">gt</span>; <span class="hljs-subst">-</span><span class="hljs-number">1</span>
isWindows <span class="hljs-subst">=</span> (ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"windows"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span> <span class="hljs-subst">||</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"win32"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span>)
isMac <span class="hljs-subst">=</span> (ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"macintosh"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span> <span class="hljs-subst">||</span> ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"mac os x"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span>)
isAir <span class="hljs-subst">=</span> (ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"adobeair"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span>)
isLinux <span class="hljs-subst">=</span> (ua<span class="hljs-built_in">.</span>indexOf(<span class="hljs-string">"linux"</span>) <span class="hljs-subst">!=</span> <span class="hljs-subst">-</span><span class="hljs-number">1</span>)  <span class="hljs-built_in">var</span> sys <span class="hljs-subst">=</span> <span class="hljs-string">""</span>;
<span class="hljs-built_in">var</span> broser <span class="hljs-subst">=</span> <span class="hljs-string">""</span>;  <span class="hljs-keyword">if</span>(isIE){broser <span class="hljs-subst">=</span> <span class="hljs-string">"IE 6"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isIE7){broser <span class="hljs-subst">=</span> <span class="hljs-string">"IE 7"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isIE8){broser <span class="hljs-subst">=</span> <span class="hljs-string">"IE 8"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isOpera){broser <span class="hljs-subst">=</span> <span class="hljs-string">"Opera"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isChrome){broser <span class="hljs-subst">=</span> <span class="hljs-string">"Chrome"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isSafari){broser <span class="hljs-subst">=</span> <span class="hljs-string">"Safari"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isSafari3){broser <span class="hljs-subst">=</span> <span class="hljs-string">"Safari3"</span>;
}<span class="hljs-keyword">else</span>{broser <span class="hljs-subst">=</span> <span class="hljs-string">"Unknow"</span>;
}  <span class="hljs-keyword">if</span>(isWin7){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Windows 7"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isVista){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Vista"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isWinXp){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Windows xp"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isWin2003){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Windows 2003"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isWin2000){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Windows 2000"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isWindows){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Windows"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isMac){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Macintosh"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isAir){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Adobeair"</span>;
}<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(isLinux){sys <span class="hljs-subst">=</span> <span class="hljs-string">"Linux"</span>;
}<span class="hljs-keyword">else</span>{sys <span class="hljs-subst">=</span> <span class="hljs-string">"Unknow"</span>;
}
document<span class="hljs-built_in">.</span>write(ua);
alert(sys <span class="hljs-subst">+</span> <span class="hljs-string">":"</span> <span class="hljs-subst">+</span> broser);</code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li><li>62</li><li>63</li><li>64</li><li>65</li><li>66</li><li>67</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li><li>62</li><li>63</li><li>64</li><li>65</li><li>66</li><li>67</li></ul>

比较全面的区分代码:

<code class="hljs javascript has-numbering"><span class="hljs-keyword">var</span> client = <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>
<span class="hljs-comment">//呈现引擎</span>
<span class="hljs-keyword">var</span> engine = {ie     : <span class="hljs-number">0</span>,gecko  : <span class="hljs-number">0</span>,webkit : <span class="hljs-number">0</span>,khtml  : <span class="hljs-number">0</span>,opera  : <span class="hljs-number">0</span>,<span class="hljs-comment">//完整的版本号</span>ver    : <span class="hljs-literal">null</span>
};<span class="hljs-comment">//浏览器</span>
<span class="hljs-keyword">var</span> browser = {
<span class="hljs-comment">//主要浏览器</span>ie      : <span class="hljs-number">0</span>,firefox : <span class="hljs-number">0</span>,konq    : <span class="hljs-number">0</span>,opera   : <span class="hljs-number">0</span>,chrome  : <span class="hljs-number">0</span>,safari  : <span class="hljs-number">0</span>,<span class="hljs-comment">//具体的版本号</span>ver     : <span class="hljs-literal">null</span>
};<span class="hljs-comment">//平台、设备和操作系统</span>
<span class="hljs-keyword">var</span> system ={win : <span class="hljs-literal">false</span>,mac : <span class="hljs-literal">false</span>,xll : <span class="hljs-literal">false</span>,<span class="hljs-comment">//移动设备</span>iphone    : <span class="hljs-literal">false</span>,ipod      : <span class="hljs-literal">false</span>,nokiaN    : <span class="hljs-literal">false</span>,winMobile : <span class="hljs-literal">false</span>,macMobile : <span class="hljs-literal">false</span>,<span class="hljs-comment">//游戏设备</span>wii : <span class="hljs-literal">false</span>,ps  : <span class="hljs-literal">false</span>
};
<span class="hljs-comment">//检测呈现引擎和浏览器</span>
<span class="hljs-keyword">var</span> ua = navigator.userAgent;
<span class="hljs-keyword">if</span> (window.opera){engine.ver = browser.ver = window.opera.version();engine.opera = browser.opera = <span class="hljs-built_in">parseFloat</span>(engine.ver);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-regexp">/AppleWebKit\/(\S+)/</span>.test(ua)){engine.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];engine.webkit = <span class="hljs-built_in">parseFloat</span>(engine.ver);<span class="hljs-comment">//确定是Chrome还是Safari</span><span class="hljs-keyword">if</span> (<span class="hljs-regexp">/Chrome\/(\S+)/</span>.test(ua)){browser.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];browser.chrome = <span class="hljs-built_in">parseFloat</span>(browser.ver);} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-regexp">/Version\/(\S+)/</span>.test(ua)){browser.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];browser.safari = <span class="hljs-built_in">parseFloat</span>(browser.ver);} <span class="hljs-keyword">else</span> {<span class="hljs-comment">//近似地确定版本号</span><span class="hljs-keyword">var</span> safariVersion = <span class="hljs-number">1</span>;<span class="hljs-keyword">if</span>(engine.webkit < <span class="hljs-number">100</span>){safariVersion = <span class="hljs-number">1</span>;} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (engine.webkit < <span class="hljs-number">312</span>){safariVersion = <span class="hljs-number">1.2</span>;} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (engine.webkit < <span class="hljs-number">412</span>){safariVersion = <span class="hljs-number">1.3</span>;} <span class="hljs-keyword">else</span> {safariVersion = <span class="hljs-number">2</span>;}browser.safari = browser.ver = safariVersion;   }
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-regexp">/KHTML\/(\S+)/</span>.test(ua) || <span class="hljs-regexp">/Konquersor\/([^;]+)/</span>.test(ua)){engine.ver = browser.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];engine.khtml = browser.kong = paresFloat(engine.ver);   
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-regexp">/rv:([^\)]+)\) Gecko\/\d{8}/</span>.test(ua)){engine.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>]engine.gecko = <span class="hljs-built_in">parseFloat</span>(engine.ver);<span class="hljs-comment">//确定是不是Firefox</span><span class="hljs-keyword">if</span> (<span class="hljs-regexp">/Firefox\/(\S+)/</span>.test(ua)){browser.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];browser.firefox = pareseFloat(browser.ver);}
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-regexp">/MSIE([^;]+)/</span>.test(ua)){browser.ver = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];browser.firefox = <span class="hljs-built_in">parseFloat</span>(browser.ver);
}
<span class="hljs-comment">//检测浏览器</span>
browser.ie = engine.ie;
browser.opera = engine.opera;
<span class="hljs-comment">//检测平台</span>
<span class="hljs-keyword">var</span> p = navigator.platform;
system.win = p.indexOf(<span class="hljs-string">"Win"</span>) == <span class="hljs-number">0</span>;
system.mac = p.indexOf(<span class="hljs-string">"Mac"</span>) == <span class="hljs-number">0</span>;
system.x11 = (p == <span class="hljs-string">"X11"</span>) || (p.indexOf(<span class="hljs-string">"Linux"</span>) == <span class="hljs-number">0</span>);
<span class="hljs-comment">//检测Windows操作系统</span>
<span class="hljs-keyword">if</span> (system.win){<span class="hljs-keyword">if</span> (<span class="hljs-regexp">/Win(?:doms)?([^do]{2})\s?(\d+\.\d+)?/</span>.test(ua)){<span class="hljs-keyword">if</span> (<span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>] == <span class="hljs-string">"NT"</span>){<span class="hljs-keyword">switch</span>(<span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$2"</span>]){<span class="hljs-keyword">case</span> <span class="hljs-string">"5.0"</span>:system.win = <span class="hljs-string">"2000"</span>;<span class="hljs-keyword">break</span>;<span class="hljs-keyword">case</span> <span class="hljs-string">"5.1"</span>:system.win = <span class="hljs-string">"XP"</span>;<span class="hljs-keyword">break</span>;<span class="hljs-keyword">case</span> <span class="hljs-string">"6.0"</span>:system.win = <span class="hljs-string">"Vista"</span>;<span class="hljs-keyword">break</span>;<span class="hljs-keyword">default</span>   :system.win = <span class="hljs-string">"NT"</span>;<span class="hljs-keyword">break</span>;              }} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>]){system.win = <span class="hljs-string">"ME"</span>;} <span class="hljs-keyword">else</span> {system.win = <span class="hljs-built_in">RegExp</span>[<span class="hljs-string">"$1"</span>];}}
}
<span class="hljs-comment">//移动设备</span>
system.iphone    = ua.indexOf(<span class="hljs-string">"iPhone"</span>) > -<span class="hljs-number">1</span>;
system.ipod      = ua.indexOf(<span class="hljs-string">"iPod"</span>) > -<span class="hljs-number">1</span>;
system.nokiaN    = ua.indexOf(<span class="hljs-string">"NokiaN"</span>) > -<span class="hljs-number">1</span>;
system.winMobile = (system.win == <span class="hljs-string">"CE"</span>);
system.macMobile = (system.iphone || system.ipod);
<span class="hljs-comment">//游戏系统</span>
system.wii = ua.indexOf(<span class="hljs-string">"Wii"</span>) > -<span class="hljs-number">1</span>;
system.ps  = <span class="hljs-regexp">/playstation/i</span>.test(ua);
<span class="hljs-comment">//返回这些对象</span>
<span class="hljs-keyword">return</span> {engine:  engine,browser:  browser,system:  system
};
}()</code><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li><li>62</li><li>63</li><li>64</li><li>65</li><li>66</li><li>67</li><li>68</li><li>69</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li><li>75</li><li>76</li><li>77</li><li>78</li><li>79</li><li>80</li><li>81</li><li>82</li><li>83</li><li>84</li><li>85</li><li>86</li><li>87</li><li>88</li><li>89</li><li>90</li><li>91</li><li>92</li><li>93</li><li>94</li><li>95</li><li>96</li><li>97</li><li>98</li><li>99</li><li>100</li><li>101</li><li>102</li><li>103</li><li>104</li><li>105</li><li>106</li><li>107</li><li>108</li><li>109</li><li>110</li><li>111</li><li>112</li><li>113</li><li>114</li><li>115</li><li>116</li><li>117</li><li>118</li><li>119</li><li>120</li><li>121</li><li>122</li><li>123</li><li>124</li><li>125</li><li>126</li><li>127</li><li>128</li><li>129</li><li>130</li><li>131</li><li>132</li><li>133</li><li>134</li><li>135</li><li>136</li><li>137</li></ul><ul class="pre-numbering" style=""><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li><li>62</li><li>63</li><li>64</li><li>65</li><li>66</li><li>67</li><li>68</li><li>69</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li><li>75</li><li>76</li><li>77</li><li>78</li><li>79</li><li>80</li><li>81</li><li>82</li><li>83</li><li>84</li><li>85</li><li>86</li><li>87</li><li>88</li><li>89</li><li>90</li><li>91</li><li>92</li><li>93</li><li>94</li><li>95</li><li>96</li><li>97</li><li>98</li><li>99</li><li>100</li><li>101</li><li>102</li><li>103</li><li>104</li><li>105</li><li>106</li><li>107</li><li>108</li><li>109</li><li>110</li><li>111</li><li>112</li><li>113</li><li>114</li><li>115</li><li>116</li><li>117</li><li>118</li><li>119</li><li>120</li><li>121</li><li>122</li><li>123</li><li>124</li><li>125</li><li>126</li><li>127</li><li>128</li><li>129</li><li>130</li><li>131</li><li>132</li><li>133</li><li>134</li><li>135</li><li>136</li><li>137</li></ul>

http://www.uedbox.com/js-notes-checking-client-javascript/

6、DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。

见DOM的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。

7、jQuery的bind、live、on、delegate的区别(考察点与上一条重叠,切入点不同)。

http://www.cnblogs.com/piercalex/archive/2013/03/30/2990679.html
http://blog.csdn.net/panfang/article/details/21705681
bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数。
.bind()是最直接的绑定方法 ,会绑定事件类型和处理函数到DOM element上, 这个方法是存在最久的,而且也很好的解决了浏览器在事件处理中的兼容问题。但是这个方法有一些performance方面的问题,看下面的代码:

<code class="hljs javascript has-numbering">$(<span class="hljs-string">"a"</span>).bind(<span class="hljs-string">"click"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>alert(<span class="hljs-string">"ok"</span>);});</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>

优点:

  • 这个方法提供了一种在各种浏览器之间对事件处理的兼容性解决方案
  • 非常方便简单的绑定事件到元素上 .click(),
  • .click(), .hover()…这些非常方便的事件绑定,都是bind的一种简化处理方式
  • 对于利用ID选出来的元素是非常好的,不仅仅是很快的可以hook上去(因为一个页面只有一个id),而且当事件发生时,handler可以立即被执行(相对于后面的live,delegate)实现方式

缺点:

  • 它会绑定事件到所有的选出来的元素上
  • 它不会绑定到在它执行完后动态添加的那些元素上
  • 当元素很多时,会出现效率问题

live(type,[data],fn)给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的。
.live()方法用到了事件委托的概念来处理事件的绑定。它和用.bind()来绑定事件是一样的。.live()方法会绑定相应的事件到你所选择的元素的根元素上,即是document元素上。那么所有通过冒泡上来的事件都可以用这个相同的handler来处理了。它的处理机制是这样的,一旦事件冒泡到document上,jQuery将会查找selector/event metadata,然后决定那个handler应该被调用。

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
.delegate()有点像.live(),不同于.live()的地方在于,它不会把所有的event全部绑定到document,而是由你决定把它放在哪儿。而和.live()相同的地方在于都是用event delegation.

<code class="hljs javascript has-numbering">$(<span class="hljs-string">"#container"</span>).delegate(<span class="hljs-string">"a"</span>,<span class="hljs-string">"click"</span>,<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>alert(<span class="hljs-string">"ok"</span>);})</code><ul class="pre-numbering" style=""><li>1</li></ul><ul class="pre-numbering" style=""><li>1</li></ul>

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数。
其实.bind(), .live(), .delegate()都是通过.on()来实现的,.unbind(), .die(), .undelegate(),也是一样的都是通过.off()来实现的

优点:

  • 提供了一种统一绑定事件的方法
  • 仍然提供了.delegate()的优点,当然如果需要你也可以直接用.bind()
    缺点:
  • 也许会对你产生一些困扰,因为它隐藏了一前面我们所介绍的三种方法的细节。

差别:

  • .bind()是直接绑定在元素上
  • .live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。
  • .delegate()则是更精确的小范围使用事件代理,性能优于.live()
  • .on()则是最新的1.7版本整合了之前的三种方式的新事件绑定机制

结论:

  • 用.bind()的代价是非常大的,它会把相同的一个事件处理程序hook到所有匹配的DOM元素上
  • 不要再用.live()了,它已经不再被推荐了,而且还有许多问题
  • .delegate()会提供很好的方法来提高效率,同时我们可以添加一事件处理方法到动态添加的元素上。
  • 我们可以用.on()来代替上述的3种方法

8、JS变量提升、匿名函数、原型继承、作用域、闭包机制等。

见JS变量提升、匿名函数、原型继承、作用域、闭包机制等。

9、对HTTP协议的理解。

http协议详解

深入理解HTTP协议、HTTP协议原理分析
这篇讲的很好,多看看

10、Ajax的常用操作,JS跨域的实现原理。

ajax常用操作及 跨域的实现原理

这篇关于前端面试题杂烩part4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236587

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败