1. 求两个日期中间的有效日期(考虑闰年)(微众银行校招笔试)

如 2015-2-8 到 2015-3-3,返回【2015-2-8 2015-2-9…】

思路:使用毫秒数  一天一天地放进去

// 求两个日期中间的有效日期(考虑闰年)如 2015-2-8 到 2015-3-3,返回【2015-2-8 2015-2-9…】
function youxiaodate(date1,date2){var result = []result.push(date1.getFullYear()+'-'+(date1.getMonth()+1)+'-'+date1.getDate())var start = date1.getTime()var end = date2.getTime()var time = 0var daytime = 24*60*60*1000while(((end-start)-time*daytime)>0){time++var item = new Date((start+time*daytime))result.push(item.getFullYear()+'-'+(item.getMonth()+1)+'-'+item.getDate())}return result
}var date1 = new Date('2022-9-10')
var date2 = new Date('2022-9-15')
console.log(youxiaodate(date1,date2))
//[
//  '2022-9-10',
//  '2022-9-11',
//  '2022-9-12',
//  '2022-9-13',
//  '2022-9-14',
//  '2022-9-15'
//]

2.写一种数组去重的方式(微众银行校招笔试)

// 简单数组去重
function quchong(arr,prop){var set = new Set(arr)return [...set]
}

3.省市县,将一个没有层级的扁平对象[ {id:1 , parentId = 0 , name = "广州"}]转换为树形结构(微众银行校招笔试)

类似的题目可看看下面的代码

思路:先用一个对象或者map把数据存起来,以键为id,值为对象

再次遍历数据,在刚刚的对象或者map中寻找parentId,若找到了,则判断一下parentId是否含有children属性,没有则添加这个属性,有则在这个属性中添加这个儿子。若找不到parentId,说明是根节点,直接加进数组中

function toTree(arr){let obj = {}let result = []for(var i=0;i<arr.length;i++){obj[arr[i]['id']] = arr[i]}for(var i=0;i<arr.length;i++){let list = arr[i]let parentlist = obj[list['pid']]if(parentlist){if(!parentlist['children']){parentlist['children'] = []}parentlist['children'].push(list)}else{result.push(list)}}return result
}var data = [{'id':101,'name':'语文','pid': -1},{'id':102,'name':'语文知识点1','pid': 101},{'id':103,'name':'语文知识点11','pid': 102},{'id':104,'name':'语文知识点2','pid': 101},{'id':202,'name':'数学知识点1','pid': 201}, {'id':201,'name':'数学','pid': -1},{'id':203,'name':'数学知识点2','pid': 201},{'id':204,'name':'数学知识点3','pid': 201},{'id':302,'name':'英语知识点1','pid': 301}
]
console.log(toTree(data))// [
//   { id: 101, name: '语文', pid: -1, children: [ [Object], [Object] ] },
//   {
//     id: 201,
//     name: '数学',
//     pid: -1,
//     children: [ [Object], [Object], [Object] ]
//   },
//   { id: 302, name: '英语知识点1', pid: 301 }
// ]

4.对象去重(广发银行前端校招一面)

简单化: 只考虑对象的某个属性进行去重

稍微复杂一点就相当于转化成比较两个对象的内容是否相等

// 根据对象数组的属性进行去重
function quchong(arr,prop){var result = []var map = new Map()for(var i=0;i<arr.length;i++){var item = arr[i]if(!map.has(prop)){map.set(prop,item[prop])result.push(item)}else if(map.get(prop)!==item[prop]){result.push(item)}}return result
}var arr= [{a:1,b:1},{a:2,b:1}]
console.log(quchong(arr,'b')) // [ { a: 1, b: 1 } ]

5.给定一个数组,返回能转为数值的(美的校招笔试)

如:输入:["567",null,"u44","0",1,"eleven","ten","99"]

输出:[ '567', '0', 1, '99' ]

首先我们要知道把非数值转化为数值的函数有三个:Number(),parseInt(),parseFloat(),且注意点是:NaN不与NaN相等,所以必须用toString()转成字符串再进行比较,或者采用Object.is()来进行比较

共同点:返回值都是数值或者NaN

不同点:

  • Number()可以传入任意类型的数据,而parseInt()和parseFloat()均是将字符串转为数值
function toNum(arr){var result = []for(var i=0;i<arr.length;i++){if(Number(arr[i]).toString() !== 'NaN' && arr[i]!=null){result.push(arr[i])}}return result
}

6. 输入一个整数n>0,返回一个一维数组(美的校招笔试)

如输入5   输出 [0,3,8,15,24]

function fn( n ) {// write code herelet result = new Array(5)result[0] = 0let add = 3for(var i = 1;i<n;i++){result[i] = Number(result[i-1]+add)add+=2}return result
}

7. 给定一组数组,若数组中元素以省字结尾,则删掉省字

如输入["广东省","广西","湖北省","湖南省","北京","吉林省"]

输出[ '广东', '广西', '湖北', '湖南', '北京', '吉林' ]

function handler(arr){let result = []for(var i =0;i<arr.length;i++){if(arr[i].charAt(arr[i].length-1) === '省'){let item = arr[i].slice(0,arr[i].length-1)result.push(item)}else{result.push(arr[i])}}return result
}

前端面试笔试编程题(持续更新中)相关推荐

  1. web前端面试常考问题——持续更新中(5.20)

    1.介绍一下你的技术栈             HTML5 + CSS3 + ES6 + Jquery + React + Webpack + git + npm .... 2.简单自我介绍 3.电商 ...

  2. 前端面试笔试错题指南(四)

    嗯,上次写blog已经是几周前的事情了,其实已经积攒了很多小问题需要记录和分享了.但是在8月底,VK我一次经历了了携程.拼多多.腾讯.网易等多轮面试轰炸,忙得不可开交,有喜有忧的同时,还是赶快记录了不 ...

  3. 剑指Offer——面试小提示(持续更新中)

    (1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)如果在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中,面试官最关心的是应聘者的 ...

  4. 前端面试笔试错题指南(二)

    嗯,小白的进击之路,继续来补充了... 又看了一些坑,自己第一次疏忽做错的,还是用笔记下来,共同进步 恩,面试系列和排坑会在github更新哦,一起准备秋招的小伙伴路过可以star下,一起进步O(∩_ ...

  5. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中

    程序员编程艺术第一~十章集锦与总结--面试.算法.编程 作者:July.编程艺术室. 出处:http://blog.csdn.net/v_JULY_v . 围绕"面试"." ...

  6. 前端经典面试题(持续更新中)

    前言 写本章的初衷是因为目前网上的面试题层出不穷,各种类型的问题都有,不是很符合本公司的项目要求以及就面试者的水品也是层次不齐,所以很难有一个通用性面试题目. 本文章将根据笔者作为面试官以及面试者的一 ...

  7. Android面试闯关——Activity(持续更新中)

    1.什么是Activity Activity是一个可以与用户交互的组件,从功能上来说,它作为应用程序的界面框架,负责动态加载各种用户界面视图,实现底层的消息传递等,不能简单地把Activity简单视为 ...

  8. 数据结构 二叉树面试笔试编程题集

    一.二叉树的最大深度 题目:给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点 题解:此题在二叉树博客中有写过,这里我留不一 ...

  9. 深拷贝和原型原型链和web api 和 this指向等(中初级前端面事题)持续更新中,建议收藏

    深拷贝 值类型的赋值就是深拷贝:变量赋值时,拷贝的不是内存地址,而是将数据完整的在内存中复制了一份 const a = 10const b = aconsole.log(b); 浅拷贝 引用类型(nu ...

最新文章

  1. linux php进程端口占用,linux如何查看端口占用情况
  2. php flock 死锁了,php – 防止由flock引起的死锁
  3. qq ip探测仪 php,巧用Win7资源监视器,查看QQ好友IP
  4. npm环境安装linux,Node.js环境在linux上的部署教程
  5. 用python的进行压缩文件
  6. 通过MBean server监控weblogic应用
  7. Java知识总结,不止为了秋招(下)!!!
  8. pycharm和python解释器安装
  9. java new string编码_Java String 类型编码转换
  10. 考研常识:考研加分和照顾政策有哪些?
  11. uniapp ios 跳转appstore
  12. 根据身份证号判断年龄
  13. UVA 11572 唯一的雪花 Unique Snowflakes
  14. 把故事收回到一杯茶里,不知不觉,茶已经凉了
  15. 诸子百家的十二家学派
  16. 万物互联时代到来,锐捷发布场景化无线零漫游方案
  17. 《软件工程》网上书店项目设计活动
  18. python合并ts视频(三种方法)
  19. linux常用命令加实例大全
  20. MySQL数据库安全策略

热门文章

  1. 计算机网络交换机原理,计算机网络__交换机工作原理
  2. 计算机基础,了解服务器的硬件组成
  3. 聚类评价指标(轮廓系数 Silhouette coefficient)
  4. 基于Python的Excel读写操作--内容超详细,值得排排坐
  5. win10修复计算机没反应,win10修复引导【解决方法】
  6. js实现搜索关键字高亮
  7. open62541 (R 1.1.2)中文文档 (译文)第一篇 (1 - 5)
  8. CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷
  9. 520表白攻略 程序员必要的相亲准备 最近你相亲表白了嘛
  10. 第03章 Tableau基础操作