谁将见证谁的成长

林林雨淋淋
谁将见证谁的成长

  前两天把半年的实习辞掉了,然后在网上投了很多份简历,收到了寥寥无几的面试请求。今天去了两家,先说上午这家。

  到了之后直接开始做笔试题,题目是英文的,12选8,现在还大概记得有

  1.git的相关用法 (自己之前公司用的是svn,git没怎么了解过,只是知道github的存在,平时也没怎么用)

  2.js:null和undefined的区别  (自己当时回答的是null是声明了未定义,undefined是未声明 , null是Object类型的)

  3.js: 二分法查找  (写的时候忘了array的截取是那个方法,胡乱写了slice)

  4.js :  继承的实现  (写了prototype,还有es6的实现的类和继承 但是关键字和声明的写法都记不太清)

  5.js :  "use strict" 用法  (严格模式  只知道不能使用未声明的变量 别的就不知道了)

  6.css : z-index的用法   (层优先级 然后面试官又问我要和什么一起使用 没答出来 面试结束了之后觉得应该是float)

  7.css : background样式 url no-repect position color 定义的顺序  (觉得是url要在最前面 no-repect第二 color最后 平时写css的时候都没有注意到这些)

  8.css : px,em,rem 区别

  9.regx :  开头是两个数字,以"$"结尾的正则表达式  (当时把以什么开头^和以什么结尾$全忘掉了,数字其实也记不大请 写了/d)

  10.react :  react框架的一些东西,因为react框架也没接触过,题目也没多大印象

 

答案:

    1.

  平时多去用用自然就ok,github应该是现在很流行的代码管理工具和学习方式,不能因为公司使用svn成为自己不会用git的借口,学习毕竟是自己的事。

  2.

type of null //object
type of undefined // undefined

  null表示一个值被定义了,定义为"空值";undefined表示根本不存在定义。

  undefined常见用法(引用阮一峰老师的博文):

//变量被声明但没有被赋值
let i;
i//undefined

//调用函数时,应该提供的参数没有提供
let f=(i)=>{
console.log(i);
}
f()//undefined
//对象未赋值的属性 let obj = {}; obj.p//undefined //函数没有返回值时,返回undefined let x = f (); x//undefined

  3.

search (i,arr)=>{
    let length = arr.length;
    if (i > arr[length/2]) {
        return search(i,arr.slice(0,length/2));
    }
    if (i < arr[length/2]) {
        return search(i,arr.slice(length/2));
    }
    return length/2;
}

  这段是我面试时的答案,缺点是arr必须经过排列才有效,而且还有一些细节的错误,比如,Js的除法取整应该使用praseInt(丢弃小数部分)或者Math.ceil(向下取整)。

let search = (i,arr) => {
    let mid = parseInt(arr.length/2);
    let midVal = arr[mid];
    if ( i < midVal) {
        return search (i,arr.slice(0,mid));
    }
    if (i > midVal) {
        return search (i,arr.slice(mid));
    }
    return mid;
}

  这段是回家之后重新写的,用键盘和用笔纸果然不一样,平时还是要多留心代码的细节,比如箭头函数的申明,array.slice()的用法,只有彻底搞懂了才可以信手拈来。

  4.

// 原型链继承
son.prototype = father;

// ES6 class继承
class son extend father{}

  ES6之前,有很多种实现继承的方法,原型链法,构造法。但现在还是使用class和extend来得方便。

  5.

  "use strict"主要用于消除js语言语法不严谨,容易出错的地方,比如声明未定义的变量,重复定义对象的属性,拓展对象的属性等等。我们平时的正常模式下就应该注意这些不严谨和容易出错的地方,写出来的代码才是高效的代码。

  6.

  z-index 属性设置元素的堆叠顺序。z-index应该在元素浮动的时候使用。如果整体页面只有一层,又何来堆叠只说。

  7.

  url color reprt position的申明没有先后之分 值得注意的是:position:(left-right) (top-bottom) 这个是固定的。

  8.

  px:"像素",em和rem都是相对长度,只不过em是相对父元素,而rem相对html的根元素

  9.

  正则表达式真是我的痛点,明明在工作中多次使用,却又多次遗忘...   (一定要好好归纳正则表达式!)

  ^:以什么什么开头(放前面)   $:以什么什么结尾(放后面)

  \d  数字     \D  非数字       .任意字符             * 很多个        {2}两个

  所以:/^\d{2}.*\$$/      或者      /^[0-9]{2}.*\$$/

  10.

  react,vue,angular...框架何其多,学好JS才是关键,不要浅尝则止,我更喜欢在工作中学习框架。

 

总结:

  整理之后发现确实都是很基础的问题,平时工作和学习中都有接触到,使用到,尤其是正则表达式,都学了好几遍了,学了忘,下次使用到就又去学。觉得这次面试暴露出了自己很大的问题,虽然有半年的实习经验,但是一些基础的东西都没有花时间去弄明白,而是"得过且过"。希望这次的失利能让自己清醒过来,以后要注重知识的整理和归纳,读书莫放拦路虎。

posted on 2018-01-03 22:19  林林雨淋淋  阅读(128)  评论(0)    收藏  举报