2015阿里巴巴前端实习生在线笔试考后总结

写在前面

还是太年轻,第一次在线笔试有些紧张了

一.2015题目

我遇到的题目:6个选择其中3个多选,1个填空,6个大题。客服姐姐说题目是随机给的(因为给了一个时段考试,而不是统一时间点开考),不过题型应该是固定的。

  1. 单选:一个数组,两个引用,相互赋值,问输出

    眩晕抗性-30%

  2. 单选:问一个return匿名函数的函数的执行结果,内部还有apply

    眩晕抗性再-69%
  3. 单选:问字符串替换结果是什么,当然,又是套了几层,绕了几圈

    眩晕抗性再-1%,嗯,做完这道给彻底绕晕了
  4. 多选:移动端,如果A按钮上覆盖了一个B按钮,给B按钮的touchstart事件处理器中添加什么处理能让A触发click

    按钮被挡住了,要想恢复交互性,隐藏遮挡物就好了,只敢选了visible一个,因为不确定题目是不是要在本次交互中触发click,不清楚display:none和从DOM中删除会不会影响冒泡,没敢选

    经过测试,发现本题根本不存在冒泡(好吧,当时可能没睡醒),顺便再测试了一下有冒泡的情况,发现不影响冒泡,即便remove掉了,还是会冒泡
    测试代码如下:

    <!--
    <div id="div1" class="div"></div>
    <div id="div2" class="div"></div>
    -->
    
    <div id="div1" class="div">
    <div id="div2" class="div"></div>
    </div>
    
    <style>
    .div{
    width:50px;
    height:50px;
    position:absolute;
    top:0;
    left:0;
    }
    #div1{
    background-color:red;
    }
    #div2{
    background-color:green;
    }
    </style>
    <script>
    var div1 = document.getElementById(‘div1‘);
    var div2 = document.getElementById(‘div2‘);
    div1.onclick = function(){
      alert(‘红色‘);
    }
    div2.onclick = function(){
      alert(‘绿色‘);
    
      //this.style.display = ‘none‘;//本次交互中不会触发红色,下次交互会触发,会冒泡
      //this.style.visibility = ‘hidden‘;//同上
      //this.parentNode.removeChild(this);//同上
    }
    </script>
  5. 多选:前端优化,下列哪一个可以减少HTTP请求数

    最近正在翻译Yahoo!的30几条前端优化原则,压力不大
  6. 多选:题目忘记了

    记得除了前端优化的,其它两道都没有绝对把握
  7. 填空:个人博客地址

    想了下填了cnblogs,因为个人网站做得还不完善,拿不出手
  8. 大题:生成10个10-100之间的随机数,并降序排列

    隐约记得书上说Math.random返回(0, 1]值

    查证之后发现JS高程中文版135页说(0, 1),而网上的普遍说法是[0, 1),后一种就和C里面的一样。以前看书记得js的随机数和C的不一样。经过测试发现书上是错的,确实含0不含1。总结如下:

    1. 获取[a, b]:Math.round(Math.random()*(b-a)+a)//四舍五入
    2. 获取(a, b]:Math.ceil(Math.random()*(b-a)+a)//向上取整(天花板)
    3. 获取[a, b):Math.floor(Math.random()*(b-a)+a)//向下取整(地板)
    4. 获取(a, b):好奇怪的需求,不如直接用第一种吧

    测试random范围的代码如下:

    var x = parseInt((Math.random()*90+10 + ‘‘).split(‘.‘)[0]);//取整数部分
  9. 大题:实现IOS风格的switch按钮,要求用多种方式实现

    花了太多时间,“实现”是要用嘴实现还是用代码?用代码写了个小实现,七八分钟就过去了,划不来
  10. 大题:给String添加原型方法,实现简单的模版替换

    考原型和正则表达式,不会在原型方法中获取字符串的值,书中说一般不要给原型加自定义属性,会污染环境,就没太在意这方面,只注重了去理解原型,构造函数,作用域链的本质及其关系,结果。。

    查了一下,发现this就是原字符串的值,阿席巴思密达~~~代码如下:

    function strcat(str){
      return this + str;
    }
    
    String.prototype.strcat = strcat;
    alert(‘xi‘.strcat(‘ ba‘));
  11. 大题:如何在画布上画出任意多个边界不相交的圆,考虑时间和空间的平衡

    后半句感觉是要写代码,前半句又不像,最后没时间了,就卖了个萌——“最简单的方法是画同心圆”,好吧,希望能让改卷的大大心情愉快
  12. 大题:实现loadScript(url, callback)异步加载脚本,完成之后执行回调函数,要求支持IE

    非要支持IE吗,时间不够了,只好写出步骤注释

    整理的代码库里收藏了xhr,如下:

    /*获取HttpRequest对象,可以兼容各个浏览器 包括IE5.5+*/
    function getHttpObject(){
    	if(typeof XMLHttpRequest == "undefined"){//如果该对象未定义,则自定义该对象
    		XMLHttpRequest = function(){
    			try{
    				return new ActiveXObject("Msxml2.XMLHTTP.6.0");
    			}catch(e){}
    			try{
    				return new ActiveXObject("Msxml2.XMLHTTP.3.0");
    			}catch(e){}
    			try{
    				return new ActiveXObject("Msxml2.XMLHTTP");
    			}catch(e){}
    			try{//老版本的 Internet Explorer (IE5 和 IE6)
    				return new ActiveXObject("Microsoft.XMLHTTP");
    			}catch(e){}
    
    			return false;
    		}
    	}
    
    	return new XMLHttpRequest();
    }
    
    var xhr = getHttpObject();
    xhr.onreadystatechange = function(){
      if(xhr.readyState === 4){
        if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304){
    	  //执行callback
    	}
    	else{
    	  //请求失败
    	}
      }
    }
    xhr.open(‘get‘, url, true);//准备异步请求,get是为了响应速度
    xhr.send(null);//发送请求,null是为了兼容性

    在线笔试让人写这种东西真的好吗?

  13. 大题:实现JQuery中的html方法

    看时间紧迫,过于紧张了,看到题目的时候眼睛罗圈了,理解成了实现JQuery中把字符串转HTML元素的方法,过于复杂,简单的写了思路。交了卷才发现看错题了。。。

    JQuery中还有比html方法更容易实现的吗?代码如下:

    function html(elem){
      return elem.innerHTML;
    }

    查看了JQuery内部,发现差不多就是这样实现的,效果一样,测试代码如下:

    var $div = $(‘#div‘);
    alert($div.html());
    alert($div[0].innerHTML);
    //在IE中标签都是大写的,其它浏览器中是小写

二.是好是坏,都是一场旅行

被KO是因为自己积累不够,比如,如果读过JQuery源码,Ajax就能轻松拿下;如果心态平和,认真读题,最后一题也能瞬间搞定。。。

在线笔试最大的特点是很难集中精力,网页很容易分散你的注意力,稍微发会儿呆,几分钟就没了

总结一下这次笔试的失败点:

  1. 时间安排不合理。中间的小题浪费了太多时间
  2. 心里素质不够。过于紧张,好吧,可能是因为高考过去很久了,和考试不熟了
  3. 基本功不够扎实。比如原型,学习的时候太偏重理论了,忽略了这样简单实际的问题
  4. 答题顺序不对。先给代码执行结果的题目绕晕了,这种东西绝对不能先答
  5. 没洗脸就开始答题了。昨晚和朋友聊到很晚才睡,自作孽。。

阿里走远了,那我的收获呢?

  1. 参加了生平第一次在线笔试
  2. 发现了自身知识网络的漏洞(对理论烂熟,却不知道this就是字符串的值)
  3. 更清楚地认识了自我,套用前辈的一句话:虽然自认为比身边的人要强一点,但离阿里需要的实习生还是有一段距离的。。

题目难吗?

说实话不难,除了画圆和xhr的题目,其它的应该没什么难点。做的这么差的原因有很多,不单单是没有经验这一条可以搪塞过去的,一句话:底子还是太薄。

后话

计划3,4月份找实习,结束之后继续潜心积攒经验。考完郁闷一会会儿就好了,怪不了别人。没关系,Tencent我正在来~

时间: 2024-08-03 13:29:51

2015阿里巴巴前端实习生在线笔试考后总结的相关文章

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015阿里前端工程师在线笔试整理

昨天下午参加了阿里前端的笔试,题目是随机的,但好像越到后面题目越难.建议小伙伴们还是尽早参加. 总体来说,题目不算很难,有时间都是可以做出来的,总共11道题,6道单选,3道填空,两道大题吧.一个小时时间略少,加上我本来想直接在上面敲代码的,然后发现太慢了,所以又改成了sumlime. 单选题有一道问无序列表是什么元素,一紧张的我竟然选了<ol>....考完才反应过来的我心都要碎成渣了 最后,有一道大题没写,一道填空和一道大题没写完.在这篇文章中进行完善吧. 1.找出页面中所有宽度和高度大于40

2014阿里巴巴WEB前端实习生在线笔试题

2014年3月31日晚,我怀着略微忐忑的心情(第一次在线笔试^_^!!)进行了笔试,阿里巴巴的笔试题共有10道,几乎包含了Web前端开发的各个方面,有程序题.有叙述题,时间非常紧张,只完成了大概6道题.下面把遇到的题目跟大家分享一下! 1. <pre name="code" class="html"><!doctype html> <html> <head> <style type="text/css&

2017百度web前端实习生在线笔试题

代码: 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 int n = sc.nextInt(); 7 int num[]=new int[n];//用户输入的数组 8 int b[]=new int[n];//复制num 9 int c[]=new int[n];//依次保

字节跳动 2019 春季算法实习生在线笔试

1. 题目一 求最少收到多少硬币,即优先用大面额的硬币找零,类似于求一个数的个位十位百位. #include <iostream> #include <stdio.h> using namespace std; int main() { int n; scanf("%d", &n); int change = 1024 - n; int a = change / 64; int b = (change - a * 64) / 16; int c = (c

阿里巴巴集团2015年秋季校招在线笔试附加题分析

刚做完,选择题做吐血,好多智力题....附加题有两道编程题.题面是回忆的内容. 1.在text中查找子串quary,返回符合匹配的quary中连续的最大的子串长度,例如 quary = "acbac",text = "acaccbabb",quary 中 "cba"是最大的连续子串,返回3. [分析] 两重循环获得quary的所有连续子串,使用KMP算法在text 查找匹配,如果匹配,则记录子串长度,最后返回最大的子串长度. 代码如下,编译通过

拼多多 2019 春季算法实习生在线笔试

1. 题目一 给出两个数组,求两个数组对应元素乘积的最小值. 先对两个数组排序,然后用第一个数组的最大值和第二个数组的最小值相乘,依次遍历即可. ?#include <iostream> #include <stdio.h> #include <vector> #include <algorithm> using namespace std; bool ascend(int i, int j) {return (i < j);} bool descen

2015阿里巴巴秋招在线笔试题

1.淘宝网(www.taobao.com)与阿里巴巴网(www.alibaba.com)是阿里巴巴集团下的两个独立网站,假设淘宝网每天的独立访客数在亿以上(以IP计),阿里巴巴网每天的独立访客数在千万以上(以IP计):这两个网站有各自的浏览日志,记录了访客在本网站上的浏览记录,如IP.访问时间.访问页面的URL等(注:一个IP在某天可能访问多个页面):现有这两个网站某天的浏览日志文件各一份,要计算在该天既访问过淘宝网又访问过阿里巴巴网站的独立访客数大约是多少,请给出你能想到的方案(可多个). 关

2015.08.23 阿里在线笔试

笔试职位:云计算支持 选择题: 数学非常多 链表插入,进程死锁,模式匹配,面向对象,树/二叉树 附加题: 1. 用Shell编程,实现 (1) 查找所有24小时内修改过的>200MB,<400MB的程序,并打包在一起 (2) 每两小时执行一次 2. Tracert的工作原理:路由跟踪过程中会有网络拥塞,为什么还能及时到达目的地 3. 查询表Tab1中的倒数第二小的元素,不能使用top等语句