最近看到一篇文章《半年工作经验今日头条和美团面试题面经分享》,对于文章里出现的面试题参考各种资料写了一下,有写的不完善的地方希望大家友善讨论~

原文链接:半年工作经验今日头条和美团面试题面经分享 - 掘金

一、css和html

 A元素垂直居中A元素距离屏幕左右各边各10pxA元素里的文字font—size:20px,水平垂直居中A元素的高度始终是A元素宽度的50%
复制代码

<html>
<head><title>测试css</title>
</head>
<body><div class="father"><div class="child">啊啊啊啊</div></div>
</body>
<style>.father {height: 100%;width: 100%;display: flex;align-items:center;text-align: center;background:#222;padding: 0 10px;}.child {margin: auto;width: 100%;  padding-top: 25%;  // width和padding百分比的基数 都是父元素的宽度padding-bottom: 25%;background:#eee;font-size: 20px;height: 0;}
</style>
</html>
复制代码

二、函数arguments

函数中的arguments是数组吗?怎么转数组?
复制代码
一、 arguments是类数组, 拥有数组的index和length属性, 不能直接调用数组的方法
二、 类数组转数组的几种方法
1. Array.from(arguments)
2. [...arguments]
3. Array.prototype.slice.call(arguments) 或者 [].prototype.slice.call(arguments)
复制代码

三、以下打印结果

if([]==false){console.log(1)};
if({}==false){console.log(2)};
if([]){console.log(3)}
if([1]==[1]){console.log(4)}
复制代码
结果: 输出1 3
==两边
Object类型会先转换为原始类型, 具体是通过valueOf()和toString()方法
1. 左侧: [].valueOf还是[],调用toString()方法, [].toString为'',''为String类型,需要转换为Number,为0右侧: false为boolean类型,需要转换为number,为0
2. 左侧: 同上,{}.toString为'[object Object]',需要转换为Number,为NaN右侧:false为boolean类型,需要转换为number,为0
3. []转换为boolean类型为true
4. 引用地址不同
复制代码

四、以下输出结果

 async function async1(){console.log('async1 start')await async2()console.log('async1 end')}async function async2(){console.log('async2')}console.log('script start')setTimeout(function(){console.log('setTimeout') },0)  async1();new promise(function(resolve){console.log('promise1')resolve();}).then(function(){console.log('promise2')})console.log('script end')复制代码
script start
async1 start
async2
promise1
script end
promise2
async1 end
setTimeout主要注意 await async2() 相当于
new Promise(()=>{console.log(async2)
}).then((resolve) => {resolve()
})复制代码

五、手写bind

注意构造函数不能使用箭头函数定义, this指向问题Function.prototype.binds = function (context) {if (typeof this !== "function") {throw new Error("Function.prototype.bind - what is trying to be bound is not callable");}let self = this;let beforeArgs = Array.prototype.slice.call(arguments, 1);let fNOP = function () {};let fbound = function () {let lastArgs = Array.prototype.slice.call(arguments);self.apply(this instanceof fNOP ? this : context, beforeArgs.concat(lastArgs));}fNOP.prototype = this.prototype;fbound.prototype = new fNOP(); // 使用空函数过渡, 修改新函数prototype时不会对原函数的prototype造成影响return fbound;}
复制代码

六、节流函数

// fn是我们需要包装的事件回调, interval是时间间隔的阈值
function throttle(fn, interval) {let last = 0return function () {let context = thislet args = argumentslet now = +new Date()if (now - last >= interval) {last = now;fn.apply(context, args);}}
}
复制代码

七、随意给定一个无序的、不重复的数组data,任意抽取n个数,相加和为sum,也可能无解,请写出该函数


/*** 获取数组arr内,num个数的全组合* 比如 arr = [1,2,3,4], num = 3* 返回 [[1,2,3], [1,2,4], [1,3,4], [2,3,4]]* @param {*} arr * @param {*} num */
function getCombination(array, number) {let result=[];(function (group,arr,num){if (num == 0) {return result.push(group);            }let length = arr.lengthfor (let i = 0; i <= length-num; i++) {arguments.callee(group.concat(arr[i]), arr.slice(i + 1), num - 1);}})([], array, number);return result;
}/*** 随意给定一个无序的、不重复的数组data,任意抽取n个数,相加和为sum,也可能无解,请写出该函数* @param {*} arr * @param {*} num * @param {*} sum */
function main(arr, num, sum) {let result = [];let list = getCombination(arr, num);for (let item of list) {let listSum = item.reduce((pre, current) => {return pre + current;},0)if (listSum == sum) {result.push(item);}}return result;
}const arr = [-1,1,2,3,4,5]
const num = 2;
const sum = 6;
const result = main(arr, num, sum);
console.log(result)复制代码

参考文章:

  • JavaScript深入之bind的模拟实现 - 掘金
  • 翻译 | ES6 箭头函数使用禁忌 - iKcamp - SegmentFault 思否
  • 从给定的无序、不重复的数组 A 中,取出 N 个数,使其相加和 为 M
  • JS的防抖与节流

转载于:https://juejin.im/post/5c2c3ea3f265da616624937c

手记 《半年工作经验今日头条和美团面试题面经分享》相关推荐

  1. 半年工作经验今日头条和美团面试题面经分享

    昨天,下着小雨去面试了,特地避开雨天,竟然还是雨天,宝宝不想说话... 正好2点到,先去字节跳动,一进去就是客厅沙发桌子,旁边有书架和书,摆设一般,一点都感受不出大公司的气质,去了一直等了30分钟,催 ...

  2. 今日头条:任务调度面试题解答

    今日头条:任务调度面试题解答 题目: 产品经理(PM)有很多好的idea,而这些idea需要程序员实现.现在有N个PM,在某个时间会想出一个 idea,每个 idea 有提出时间.所需时间和优先等级. ...

  3. 今日头条php面试经验,「今日头条」前端面试题和思路解析

    一篇文章和一道面试题 作者用一道2017年「今日头条」的前端面试题为引子,分步讲解了最终结果的执行原因.其中涉及到了不少概念,比如异步的执行顺序,宏任务,微任务等等,同时作者限定了执行范围,以浏览器的 ...

  4. 今日头条后端Java社招面经分享

    来自:程序员面试 作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 今日头条后端一面社招面经,内容比较偏计算机基础和项目,全程50分钟左右.问的问题大概包含以下几点: 1.自我介绍,挑一个 ...

  5. 2017今日头条校招前端面试题(一面)

    今日头条向来是业界的薪资标杆,所以想去的也多,面试的难度自然就上来了.由于止步于一面,这里整理一下自己前端面试的问题. 总的来说,面试偏整体计算机知识的考察,其中重点是算法,而且一题多问,考察较为细致 ...

  6. 今日头条一面笔试面试题!!!!!完整

    参加字节跳动的面试,笔试一个小时,面试一个多小时,中午在公司食堂吃了顿饭,然后完毕,邮件通知我挂掉了. 先笔试,然后拿着卷子,面试官会根据笔试题从后往前问,整个过程感觉学习到超级多东西 先说笔试题-来 ...

  7. 我的Android开发半年工作经验总结

    昨天又加班到10点多,终于App上线了,这段时间的加班总算告一段落. 很久以前我还奢望App上线后就可以休息一段时间,工作后才知道,1.0版本上线后还有1.1,1.1以后还有1.2,永不停歇. 工作是 ...

  8. 半年工作经验的前端菜鸟分享一些经验心得

    我从来都认可的一句话就是你在大学的时候玩耍的时间,迟早要到社会上要偿还的.可能很多普通本科的学生上的有点类似"电竞大学"的那种感觉,本人是二本的计算机专业出身,但是一毕业感觉到了失 ...

  9. 2018今日头条春招面试题

    一.打印蛇形矩阵 给定二维数组a[N][M],按照回字形打印数组中的数值. 例如: 1 2 3 4 5 6 7 8 9打印为 1 2 3 6 9 8 7 4 5 思路一:一圈一圈地走,如上例中,最外圈 ...

  10. 三年工作经验java面试宝典(个人总结,现分享)

    数据库 1.mysql的隔离级别有哪些,解读下脏读幻读 ①Read Uncommitted(读未提交) 所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级 ...

最新文章

  1. 小学五年级计算机备考方案,小学五年级备考方案(2)
  2. C++之inline函数使用总结
  3. 单体预聚合的目的是什么_第七章 配位聚合
  4. 数据库基本SQL语句大全
  5. (九)OpenCV Canny边缘检测
  6. 《Java技术》第四次作业
  7. hadoop资料汇总
  8. JVM执行子系统探究——类文件结构初窥
  9. linux十大实用工具,10大好用的Linux实用工具推荐
  10. win10计算机切换用户,win10账户切换,详细教您win10怎么切换账户
  11. vue 中 用showdown预览markdown文件,并用highlight.js 实现代码高亮
  12. 量化学习:大数据时代的学习方式
  13. ESP8266天猫精灵接入流程
  14. 海定计算机计算标准差,标准差怎么算公式(标准差的计算例题)
  15. VUE调用WEB3.0实现代币查询,批量转账功能
  16. Glide的使用回收内存问题
  17. 关于发短信的软件(zz)
  18. python 多重列表去重_Python对列表去重的多种方法(四种方法)
  19. 深入了解示波器(九):示波器的XY时间模式
  20. 无法启动此程序,因为计算机中丢失MSVCP110.dll ,MSVCR110.dll

热门文章

  1. Python 2 和 3 的区别记录
  2. Docker JDK镜像
  3. vue的一些基本指令,搭建、编译、运行、打包
  4. 自学JAVA-11:IO流
  5. 导航 navigationbar 与 tabbar
  6. 外部类与嵌套类的区别
  7. Problem:服务器超过最大中终连接数
  8. 最佳Excel导入实践(一)
  9. 利用Struts拦截器完成文件上传功能
  10. SDWebImage之SDImageCache