2015年 阿里2道前端笔试题+堆糖2道前端笔试题

阿里前端笔试题

1、一个表格HTML代码如下

<table id="table1">

  <tbody>

    <tr><td>1</td><td><button>Delete</button></td></tr>

    <tr><td>2</td><td><button>Delete</button></td></tr>

    <tr><td>3</td><td><button>Delete</button></td></tr>

  </tbody>

</table>

当使用者按下”Delete”按钮时, 将所按到的行(tr)删除, 请使用原生JavaScript实现。

 

 

<script type="text/javascript">
var table = document.getElementById('table1');
table.addEventListener('click', function(event){
var tr = event.target.parentNode.parentNode;
tr.parentNode.removeChild(tr);
});
</script>

 

2、背景:
    1.对象A直接调用对象B的某个方法,实现交互逻辑。但是导致的问题是A和B紧密耦合,修改B可能导致A调用B的方法失效。
    2.为了解决耦合导致的问题,我们可以设计成:
    对象A生成消息->将消息通知给一个事件消息处理器(Observable)->消息处理器将消息传递给B
    具体的调用过程变成: A.emit(’message’,data);   B.on(‘message’,function(data){  });
    请实现这一事件消息代理功能

    //请将事件消息功能补充完整
    function EventEmitter(){

    }

 

堆糖2道前端笔试题

1、写一个jquery组件,获取form表单中所有元素的键/值,并以Ajax方法提交。不能使用JQ提供的序列化方法。

 

2、

有一个数组 3,10,45,6,7,8,9,9,6,5,42,54,6,5,76,7,54,45,45,67,67,4,100,7,32,20,42,84,81,22,每次随机删除其中一个元素,问经过5次删除后,提问 新数组中第16个元素,在原数组中所在位置。

//answer

 只需要创建一个和原输入数组同样大小的bolean数组,初始化全为0,删除原数组中某个元素的时候,对应将boolean数组同样索引的元素置1,这样经过5次删除之后,顺序遍历boolean数组,跳过置1的元素,知道访问第16个值为0的元素,输出该元素的数组下标
 
//附:个人解法

var array_var = array_ori = [3,10,45,6,7,8,9,9,6,5,42,54,6,5,76,7,54,45,45,67,67,4,100,7,32,20,42,84,81,22];
var array_boo, array_len,num_rand,k,count;
var count_del = 5,
//新数组中元素的位置
elem_newarray = 16;

array_len = array_ori.length;
array_boo = new Array(array_len);
//array_boo 数组初始化
for(var i=0; i<array_len; i++){
array_boo[i] = 0;
}

for(var j=0;j<count_del;j++){
//产生随机数
num_rand = Math.round( Math.random()*(array_var.length) );
array_var.splice(num_rand,1);
//删除原数组中某个元素的时候,将对应boolean数组同样索引的元素置1
k = count = 0;
while(true){
//记录array_boo数组中0的个数
if (!array_boo[k]) {
count++;
}
if (count == num_rand) {
array_boo[k] = 1;
break;
};
k++;
}
}

count = 0;
for (var z = 0; z<array_len; z++) {
if (!array_boo[z]) {
count++;
}
if (count == elem_newarray) {
console.log("新数组中第"+ elem_newarray+"个元素,在原数组中所在位置:"+z);
break;
};
};

 

 

转载于:https://www.cnblogs.com/spray1990/p/spray.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值