zoukankan      html  css  js  c++  java
  • 11月1号笔试题总结

      今天是11月1日,参加了两场宣讲会并参加了笔试。昨天因为下雨,而且没有公司就歇了一天。大概总结下今天的笔试题,两套题有一些相同的题。

      1. CSS中的单位: %,百分比;in,英寸;cm,厘米;mm,毫米;em,和字体大小有关,相对单位;ex,一个 ex 是一个字体的 x-height。(x-height 通常是字体尺寸的一半);pt,磅(1pt 等于 1/72英寸);pc,12点活字(1 pc等于12点,大约6pt,1/6英寸);px,像素(计算机屏幕上的一个点)。

      2.  深入理解BFC

      3.  在IE9丶火狐丶谷歌浏览器下font-size:12px 的宋体文字所占高度依次是  13.69(约为14),15,14。这是自己测试的,真是这样的话,就没有正确答案。

    A 12 12 12  B. 14 17 14 C.14 14 12 D.17 17 12 感觉最接近的就是B答案了,可能是之前火狐显示的高度是 17 吧。

      4.  在 HTML5 中,getCurrentPosition()获得当前位置,返回并保存值。getLocation( ) 地图定位用户所在位置。

      5. 

    1 <script>
    2     var bb = 1;
    3     function aa(bb){
    4         bb = 2;
    5         alert(bb);
    6     };
    7     aa(bb);    //2
    8     alert(bb);    //1
    9 </script>

      6.  javascript有 5 种原始数据类型,分别是 string,number,boolean,null,undefined。

        null == undefined,结果为 true。

      7.  数组的写法

     1 var mycars=new Array()
     2 mycars[0]="Saab"
     3 mycars[1]="Volvo"
     4 mycars[2]="BMW"
     5 
     6 var mycars=new Array(3)
     7 mycars[0]="Saab"
     8 mycars[1]="Volvo"
     9 mycars[2]="BMW"
    10 
    11 var mycars=new Array("Saab","Volvo","BMW")

      8. 

    1<script>
    2   var arrTemp = [1,2,3];
    3   arrTemp.shift();    //[2,3]
    4   arrTemp.push(1);    //[2,3,1]
    5   arrTemp.unshift(2);    //[2,2,3,1]
    6   var arrNew = arrTemp.concat([1,2]);//[2,2,3,1,1,2]
    7   console.log(arrNew);
    8</script>

    array对象属性:  

          constructor,返回对创建此对象的数组函数的引用。

          length,设置或返回数组中元素的数目。

          prototype,使你有能力向对象添加属性和方法。

    array对象方法:

          concat(),连接两个或更多的数组,并返回结果。

          join(),把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

          pop(),删除并返回数组的最后一个元素。

          push(),向数组的末尾添加一个或更多元素,并返回新的长度。

          reverse(),颠倒数组中元素的顺序。

          shift(),删除并返回数组的第一个元素。

          slice(),从某个已有的数组返回特定的元素。

          sort(),对数组的元素进行排序。

          splice(),删除元素,并向数组添加新元素。

          toSource(),返回该对象的源代码。

          toString(),把数组转换为字符串,并返回结果。

          toLocationString(),把数组转换为本地数组,并返回结果。

          unshift(),向数组的开头添加一个或更多元素,并返回新的长度。

          valueOf(),返回数组对象的原始值。

      9. JSON数据,{"name":"xiaoming","age":"student"}

          1) JSON的字符串必须用双引号。

          2) JSON无法表示 undefined,只能表示 "undefined"。

          3) JSON无法表示函数。

          4) JSON的对象语法不能有引用。

      10.

    1 <script>
    2     var arr = [];
    3     arr[0] = 0;
    4     arr[1] = 1;
    5     arr.foo = 'c';
    6     console.log(arr.length);  //2 length返回的是array的数组索引长度,
                       //数组索引只能是数字,如果是字符串的相当于对象属性了。
    7 </script>

      11.

    1 <script>
    2     var obj = {
    3         a:1,
    4         b:function(){alert(this.a)}
    5     };
    6     var fun = obj.b;
    7     fun();    //弹出 undefined
    8 </script>        

    this的行为有时候会显得极其诡异,让人感到困惑,但只需要记住 this的值要等到代码真正执行时才能确定
    同时this的值具体有以下几种情况:

    1. new 调用时指的是被构造的对象

    2. callapply调用,指向我们指定的对象

    3. 对象调用,如执行obj.b()this指向obj

    4. 默认的,指向全局变量window(相当于执行window.fun())

    这样看来,当你执行fun()的时候,以上1,2点均不满足。
    第3点,因为this是运行时确定的,而我们执行fun(),等同于windown.fun()(与obj没有任何关系),自然的this指向window,而window没有定义变量a,结果是undefined

    1 <script>
    2     var obj ={
    3         a:alert(1),
    4         b:(function(){alert(2);}()) 
    5     }; 
    6     var fun =obj.b; 
    7     fun();    //先弹出1,再弹出2
    8 </script>

      12.

    1 <script>
    2     for (var i=0;i<5;i++){
    3         setTimeout(function(){
    4             console.log(i+'');  //5 5 5 5 5
    5         },100);
    6     }
    7 </script>

      涉及到作用域问题,如果将 var 改为 let,则输出为 0 1 2 3 4  

      13.

     1     var a = "undefined";
     2     var b = "false";
     3     var c = "";
     4     function assert(aVar){
     5         if(aVar)
     6             alert(true);
     7         else
     8             alert(false);
     9     }
    10     assert(a);    //true
    11     assert(b);    //true
    12     assert(c);    //false   

      14. javascript常见事件的触发情况

      15. 正确定义函数

      16. sessionStorage 保存数据的方法:sessionStorage.setItem("key","value");

      17.

    1     var x = new Boolean(false);
    2     if(x) alert('hi');        
    3     var y = Boolean(0);
    4     if(y) alert('hello');
    5     //alert('hi')

      如果Boolean构造函数的参数不是一个布尔值,则该参数会被转换成一个布尔值。如果参数是 0,-0,null,false,NaN,undefined,或者空字符串(" "),生成的Boolean对象的值为false,其他任何值,包括任何对象或者字符串 "false" ,都会创建一个值为 true 的Boolean对象。

      18.

    1     var x = {a:10,b:20};
    2     var y = {a:40,c:50};
    3     y.__proto__ = x;
    4     console.log(y.a);    //40
    5     console.log(y.b);    //20
    6     console.log(y.c);    //50

      19.

    1     function foo(x,y,z){
    2         console.log(foo.length)        //3  形参
    3         console.log(arguments.length);    //2  实参
    4         }
    5     foo(1,2);

      20.

     1     var x = 10;
     2     function fn(y){
     3         console.log(x+y);
     4     }
     5     function show(f){
     6         var x = 20;
     7         var b = 9;
     8         f(b);
     9     }
    10     show(fn);    //19

      21. 用js实现数组去重,输出无重复数据的数组,要求时间,空间最优。可写出多种实现方式并注明优缺点。 

      22. 用html,css和js模拟实现一个下拉框,使得下拉框在各个浏览器下的样式和行为完全一致。说明你的设计方案,并且重点说明功能设计时要考虑的因素。

      23. 优雅降级和渐进增强

    渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验

     

    优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

     

    区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带

     

    "优雅降级"观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。

     

    在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

    “渐进增强”观点则认为应关注于内容本身。内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在

      24. http状态码

      25. GET 和 POST   

    区别一:

    从字面上可以看出,get(获取)重点在从服务器上获取资源,post(发送)是向服务器发送数据;

    区别二:

    get传输数据是通过URL请求,以field(字段)= value的形式,置于URL的后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;

    post传输数据通过Http的post机制,将field与对应值封存在请求报文的内容实体中发送给服务器,这个过程对用户是不可见的;

    区别三:

    get传送的数据,服务器端用Request.QueryString()方法获得;

    post传送的数据,服务器端用Request.Form()方法获得;

    区别四:

    Get传输的数据量小,因为受URL长度限制,但效率较高

    Post可以传输大量数据,所以上传文件时只能用Post方式

    区别五:

    get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;

    post较get安全性较高;

    区别六:

    get限制Form表单的数据集的值必须为ASCII字符,不能通过request.setCharacterEncoding("utf-8");设置中文字符,服务器得到的中文字符可能为乱码!

    post支持整个字符集ISO10646,可以通过request.setCharacterEncoding("utf-8");正确显示中文字符。

      26. 如何提高网站的性能

      27. src 和 href的区别

           href是Hypertext Reference的缩写,表示超文本引用。用来建立当前元素和文档之间的链接。常用的有:link、a。例如

    1 <link href = "1.css" rel = "stylesheet" />

    浏览器会识别该文档为css文档,并行下载该文档,并且不会停止对当前文档的处理。这也是建议使用link,而不采用@import加载css的原因。

         src是source的缩写,src的内容是页面必不可少的一部分,是引入。src指向的内容会嵌入到文档中当前标签所在的位置。常用的有:img、script、iframe。例如

    1 <script src = "script.js"></script>

    当浏览器解析到该元素时,会暂停浏览器的渲染,知道该资源加载完毕。这也是将js脚本放在底部而不是头部得原因。

        简而言之,src用于替换当前元素;href用于在当前文档和引用资源之间建立联系。

       28. js找出数组 arr 中重复出现过的元素。输入例子: duplicate([1,2,4,4,3,3,1,5,3]).sort() 

    输出例子:[1,3,4] 

       程序如下:

    1 function duplicates(arr) {
    2     result = [];
    3     arr.forEach(function(item){
    4         if(arr.indexOf(item)!=arr.lastIndexOf(item)&&result.indexOf(item)==-1)
    5             result.push(item);         
    6   })
    7     return result;
    8 } 
  • 相关阅读:
    web控件文本框不响应回车事件
    封装的概念
    js 中eval的使用
    C#调用存储过程
    javascript和C#对URI编码
    比较好的博客日历控件
    扩展方法实例
    C# 集合类
    数据访问层的几种数据库连接方式
    aspnetpage分页控件的使用
  • 原文地址:https://www.cnblogs.com/wangmengjun/p/7769440.html
Copyright © 2011-2022 走看看