金山笔试总结

  金山公司的笔试题目,过后把自己在考场写的代码测试一下,发现存在不少问题,仔细地总结了一番,如下:

一、检查一个值是否为NaN

 1 <html> 
 2 <head> 
 3 <script language="JavaScript"> 
 4     function isNumber(){ 
 5     var btnObj=document.getElementById("idTel"); 
 6     var strValue=btnObj.value; 
 7 
 8     if(!isNaN(strValue)){ //若是数字则返回false
 9         alert("is number"); 
10     }else{ 
11     alert("not a number"); 
12     } 
13 
14     } 
15 </script> 
16 </head> 
17 <body> 
18     <form action="" method="post" name=""> 
19         <input type="text" name="tel" id="idTel" value=""> 
20         <input type="button" name="isNum" value="提交" onclick="isNumber()"> 
21     </form> 
22 </body> 
23 </html> 


二、JS函数实现sum(2)(3) => 5

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         function sum(a){
10             return function(b){
11                 return a+b;
12             }
13         };
14         alert(sum(3)(2));//闭包有两种应用:1、函数作为返回值 2、函数作为参数传递
15     </script>
16 </body>
17 </html>


三、从整数1到n共出现多少个0

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9     //从整数1到n共出现了多少个0
10         function count_zero(n){
11             var arr = new Array();
12             for(var i = 1;i <= n;i++){
13                 var b = i,r;
14                 while(b != 0){
15                     r = b % 10;
16                     b = Math.floor(b / 10); //一开始是"b=b/10",js并不像C语言
17                     arr.push(r);
18                 }
19             };
20             var zero_num = count(arr);
21             return zero_num;
22         }
23 
24         function count(arr){
25             var count = 0;
26             for(var i = 0;i < arr.length;i++){
27                 if(arr[i] == 0){
28                     count++;
29                 }
30             }
31             return count;
32         }        
33 
34         var a  = count_zero(100);
35         var b  = count_zero(105);
36         console.log(a);
37         console.log(b);
38         
39     // javascript除法如何取整  
40     // Math.round(x) 四舍五入,如Math.round(0.60),结果为1;Math.round(0.49),结果为0;  
41     // Math.floor(x) 向下舍入,如Math.floor(0.60)与Math.floor(0.49),结果均为0;  
42     // Math.ceil(x)向上舍入,如Math.ceil(0.60)与Math.ceil(0. 49),结果均为1。
43     </script>
44 </body>
45 </html>


四、JS函数,从数组中清除重复元素

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         function uniqueArray(arr){
10             var arr = arr || [];    //var arr = arr | [];   arr一直都是0。。。
11             console.log(arr);
12             var obj = {};
13             for(var i = 0;i < arr.length;i++){
14                 var v = arr[i];
15                 if(typeof(obj[v]) == 'undefined'){
16                     obj[v] = 1;
17                 }
18             };
19             arr.length = 0;
20             for(var i in obj){
21                 arr[arr.length] = i;
22             };
23             return arr;
24         }
25         var arr1 = [1,3,5,7,7,8,9,3,10,8];
26         var arr2 = [1,3,5,7,7,8,9,3,10,8,"sdsdsds","sss","ffff","sss","sss"];
27         console.log(uniqueArray(arr1));
28         console.log(uniqueArray(arr2));         
29     </script>
30 </body>
31 </html>

  这是在度娘上找到的不错的一种算法

 

五、prototype实现一个简单的继承例子

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         function Father(){
10             this.Supproperty = "hi,i am gdt";
11         }
12         Father.prototype.getSupValue = function(){
13             return this.Supproperty;
14         };
15         function Son(){
16             this.Subproperty = "hi,i am fxt";
17         }
18         Son.prototype = new Father();
19 
20         Son.prototype.getSubValue = function(){
21             return this.Subproperty;
22         };
23 
24         var instance = new Son();
25         console.log(instance instanceof Son);//instanceof用于判断一个变量是否某个对象的实例,如是则返回true
26         console.log(instance);
27         //引用父类的属性和方法            
28         console.log('父类属性:'+instance.Supproperty);
29         console.log('父类属性:'+instance.getSupValue());
30         //使用子类的属性和方法
31         console.log('子类属性:'+instance.Subproperty);        
32         console.log('子类属性:'+instance.getSubValue());
33     </script>
34 </body>
35 </html>

 

六、网络请求优化方案

  • 尽量减少HTTP请求数里的减少图片请求数量,可用实现CSS Sprite
  • 压缩文本和图像,使用gzip这样的压缩技术,依靠增加服务端压缩和浏览器解压的步骤,来减少资源的负载。

  • 使用Ajax来从Web服务器上获取数据,它并不需要更新正在运行的页面,Ajax能更新页面上的某个部分而不需要重新构建整个页面。

  详细还可参考http://blog.jobbole.com/46599/

 

posted @ 2016-04-12 22:46  DTBelieve  阅读(296)  评论(0编辑  收藏  举报