资讯专栏INFORMATION COLUMN

面试总结(给自己看的)

mikyou / 3148人阅读

摘要:记录水平垂直居中方法绝对定位方法绝对定位方法方法和的区别在文档流中没有,在文档流占据空间但不显示隐形是否继承不继承是否占据空间不占据空间页面属性更改是否重新渲染重新渲染忘了点击列表显示相应内容内容内容内容内容内容方法闭包方法事件代理布尔值是

20170913记录

1. 水平垂直居中
// 方法1: 绝对定位1 // 方法2: 绝对定位2 // 方法3: flex // 方法4: css3 transform transalte
2. display: none和visibility: hidden的区别
display在文档流中没有,visibility在文档流占据空间但不显示(隐形)

1. 是否继承 display不继承
2. 是否占据空间 display不占据空间
3. 页面属性更改是否重新渲染 display重新渲染
3. 忘了 4. 点击列表li显示相应内容
  • 内容1
  • 内容2
  • 内容3
  • 内容4
  • ...
  • 内容1000
// 方法1:闭包 var lists = document.querySelectorAll("#ul li"); for (var i = 0; i < lists.length; i++) { (function(i) { console.log(lists[i]); lists[i].onclick = function () { alert(this.innerHTML); } })(i) } // 方法2:jquery on事件代理 var lists = document.getElementById("ul").children; for (var i = 0; i < lists.length; i++) { (function(i) { console.log(lists[i]); lists[i].addEventListener("click", function (e) { alert(e.target.innerHTML); }, false); // 布尔值是否捕获 })(i) }
事件代理

原理:利用事件冒泡和事件源(target)

事件执行过程:

事件捕获阶段(事件不执行)

处于目标阶段(获取执行事件的目标源target并执行事件,此阶段被看作是冒泡的一部分)

事件冒泡阶段

jQuery事件代理

delegate() 为指定元素(被选中元素的子元素)添加一个或多个事件处理程序

on() jquery中的事件绑定都是基于on方法的,所以那些方法都可以使用on方法来代替的

5. 输出日期格式xxxx-xx-xx,不足两位数的要补齐
// 1.默认情况 格式"YYYY-MM-DD HH:MM:SS"
function dateFormat (time, format) {
  // 2.默认格式转换机制
  var formatValue = format || "YYYY-MM-DD HH:MM:SS" // 默认值设置
  var dateValue = new Date(time);
  return formatObj[formatValue](dateValue)
}

// 3.将格式统一转换成00
function fixed2 (str) {
  return str < 10 ? "0" + str : str
}

// 4.考虑所有格式情况的组合 根据题目要求只有四种组合情况
var formatObj = {
  "YYYY-MM-DD HH:MM:SS": function (date) {
    var Y, M, D, h, m, s, last;
    Y = date.getFullYear() + "-";
    M = fixed2(date.getMonth() + 1) + "-";
    D = fixed2(date.getDate()) + " ";
    h = fixed2(date.getHours()) + ":";
    m = fixed2(date.getMinutes()) + ":";
    s = fixed2(date.getSeconds());
    last = Y + M + D + h + m + s;
    return last;
  },
  "YYYY-MM-DD HH:MM": function (date) {
    var Y, M, D, h, m, last;
    Y = date.getFullYear() + "-";
    M = fixed2(date.getMonth() + 1) + "-";
    D = fixed2(date.getDate()) + " ";
    h = fixed2(date.getHours()) + ":";
    m = fixed2(date.getMinutes());
    last = Y + M + D + h + m;
    return last;
  },
  "YYYY-MM HH:MM:SS": function (date) {
    var Y, M, h, m, s, last;
    Y = date.getFullYear() + "-";
    M = fixed2(date.getMonth() + 1) + " ";
    h = fixed2(date.getHours()) + ":";
    m = fixed2(date.getMinutes()) + ":";
    s = fixed2(date.getSeconds());
    last = Y + M + h + m + s;
    return last;
  },
  "YYYY-MM HH:MM": function (date) {
    var Y, M, D, h, m, s, last;
    Y = date.getFullYear() + "-";
    M = fixed2(date.getMonth() + 1) + " ";
    h = fixed2(date.getHours()) + ":";
    m = fixed2(date.getMinutes());
    last = Y + M + h + m;
    return last;
  }
}
dateFormat(1350052653, "YYYY-MM-DD HH:MM") // 1970-01-16 23:00:52
dateFormat(1350052653, "YYYY-MM-DD HH:MM") // 1970-01-16 23:00
dateFormat(1350052653, "YYYY-MM HH:MM:SS") // 1970-01 23:00:52
dateFormat(1350052653, "YYYY-MM HH:MM") // 1970-01 23:00
6. 变量执行顺序和函数参数
function result (a, b, c) {
    arguments[1] = c;
    return b;
}
alert(result(1, 2, 3)); // 3
alert(result(daydao)); // undefined
var daydao = "理才网";

agrguments是一个类似数组的对象,对应于传递给函数的参数

参数也可以被设置:arguments[1] = "new value"

7. js实现找出字符串中出现次数最多的字符,并输出这个字符出现的次数

https://segmentfault.com/q/10... 参考

解题思路:
- 切割字符串为数组
- 遍历产生字典
- 根据出现次数排序
- 输出出现次数最多的字符数组

function analysisString (str) {
    var str = str || "",
        arr = str.split(""),// 1.分割字符串为数组
        numMap = {}, // 记录所有字符的出现频次
        mostArray = []; // 记录所有出现次数最多的字符,保存在数组中
    // 2.遍历所有字符字典
    arr.forEach(function (item) {
        // 记录所有字符的出现频次,保存在对象中
        // 记录所有出现次数最多的字符, 保存在数组中
        numMap.increase(item);
        mostArray.add(item);
    });
    // 3.根据出现次数进行数组排序
    mostArray = mostArray.sort(function (a, b) {
        return numMap[b] - numMap[a]; // 从大到小排序
    }).filter(function (item, i) { // 过滤,当当前次数等于最大次数时添加在mostArray数组里
        if (numMap[item] === numMap[mostArray[0]]) {
            return item;
        }
    });
    // 4.返回出现字符次数最多的数组和最多次数
    return {
        mostArray: mostArray,
        freqNum: numMap[mostArray[0]]
    };

}
Object.prototype.increase = function (key) {
    var self = this,
        val = self[key]*1 || 0;
    self[key] = val + 1;
    return self;
};
Array.prototype.add = function (item) {
    var self = this;
    if (self.indexOf(item) < 0) { // 数组中没有这个字符
        self.push(item);
    }
    return self;
};
console.log(analysisString("hayleyliuhui"));
8. 正则实现将“
理才网上线成功!
”替换成“理才网上线成功!”
以下分别代表什么意思
+
*
?
*?
{}
[]
()
var str = "
理才网上线成功!
"; var reg = /<[/a-z]+>/; str.split(reg).join(""); // ["", "理才网", "上线成功", "!", ""] str.join(""); // 理才网上线成功!
面试过程记录:

基本上问的问题都回答出来了,考察知识点主要是css布局、js事件代理、js函数、jquery、多个事件同步处理、css动画、vue

感受:

主要考察css布局和js事件代理和数组操作

职位是一个人负责某个项目的管理后台,项目组有20多个前端,平时有技术分享会

技术栈jquery40%、vue60%

做的好:

遇到问题会努力思考

不懂的询问面试官、与面试官多讨论和交流

没有冷场

不足:

没有准备好自我介绍

没有对面试公司提清楚自己的问题

没有掌控面试的流程和主动权

继续准备:

总结面试题

再多看看jquery和css动画

准备2面和3面(技术负责人、hr、技术总监分别准备)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91778.html

相关文章

  • 那些年我看过的书 —— 致敬我的大学生活 —— Say Good Bye !

    摘要:开头正式开启我入职的里程,现在已是工作了一个星期了,这个星期算是我入职的过渡期,算是知道了学校生活和工作的差距了,总之,尽快习惯这种生活吧。当时是看的廖雪峰的博客自己也用做爬虫写过几篇博客,不过有些是在前人的基础上写的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 开头 2017.08.21 正式开启我...

    xiaoqibTn 评论0 收藏0
  • JS笔记

    摘要:从最开始的到封装后的都在试图解决异步编程过程中的问题。为了让编程更美好,我们就需要引入来降低异步编程的复杂性。异步编程入门的全称是前端经典面试题从输入到页面加载发生了什么这是一篇开发的科普类文章,涉及到优化等多个方面。 TypeScript 入门教程 从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。 网络基础知识之 HTTP 协议 详细介绍 HTT...

    rottengeek 评论0 收藏0
  • 26自学转行前端(写和1年前一样迷茫的我的你)

    摘要:转行前端有哪些疑虑在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面这里前后端指的是开发的前后端。 转行前端有哪些疑虑? 在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面:这里前后端指的是web开发的前后端。1、前端岗位需...

    番茄西红柿 评论0 收藏2637
  • 26自学转行前端(写和1年前一样迷茫的我的你)

    摘要:转行前端有哪些疑虑在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面这里前后端指的是开发的前后端。 转行前端有哪些疑虑? 在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面:这里前后端指的是web开发的前后端。1、前端岗位需...

    番茄西红柿 评论0 收藏2577
  • 26自学转行前端(写和1年前一样迷茫的我的你)

    摘要:转行前端有哪些疑虑在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面这里前后端指的是开发的前后端。 转行前端有哪些疑虑? 在人生的抉择处,寻求一些别人的经验和总结,无可厚非,但是决定了就一定要坚定的走下去,谨慎是为了更好的坚持,而不是放弃的理由。写在前面:这里前后端指的是web开发的前后端。1、前端岗位需...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

mikyou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<