编程题问题描述:

返回整数数组中出现次数第n多的数字(返回值可能有多个)

最近在找实习,面试二面最后出了一道这样的编程题,当时有思路但语法有错误,而且很紧张,最后没有运行出来,导致凉凉,回来重新思考了一下这个问题,按照当时面试的思路继续完善了一下,实现方法如下:

//思想是,1.先利用对象得到每个数字出现的次数,数字为对象中的键,出现的次数为对象中的值;2.将对象中的值保存为一个新的数组(去重),对新的数组进行从大到小的排序,第n多即为新数组中的第n-1个元素;3.遍历对象,输出值为 新数组中的第n-1个元素 的键

function cvte(n,arr){
//1.用对象的方法可以返回数组中出现次数为n的数字,但不是出现次数第n多的数字
var obj={};
for(var i=0;i<arr.length;i++){
if(arr[i] in obj){ //用到了 in 关键字
obj[arr[i]] += 1;
}else{
obj[arr[i]] = 1;
}
}
console.log(obj); //2.将对象中的值保存为一个新的数组(去重)
var newarr=[];
var j=0;
for(var k in obj){
if(newarr.indexOf(obj[k])==-1){
newarr[j++]=obj[k];
}
} //2.对新数组进行冒泡排序,上一篇博客有提到十种排序算法,这里任选一种
for(var i=0;i<newarr.length-1;i++){
var flag = true;
for(var j=0;j<newarr.length-i-1;j++){
if(newarr[j]<newarr[j+1]){
var temp = newarr[j];
newarr[j] = newarr[j+1];
newarr[j+1] = temp;
flag = false;
}
}
if(flag){
break;
}
}
//或使用sort方法,b-a是从大到小排列,a-b是从小到大排列
// newarr.sort(function(a,b){
// return b-a;
// })
console.log(newarr); //3.输出值为 新数组中的第n-1个元素 的键
var count = newarr[n-1];
var result='';
for(var k in obj){ //用到了 in 关键字
if(obj[k]==count){
result += (k + ' ');
}
}
console.log(result);
} cvte(2,[2,5,8,6,2,3,5,5,9,5]);

  我自己总结了一下,写这个题的过程中我错误的点:

1.首先是面试时候我写错了的语法。(其实这个语法是以前看过的,但是没记牢固,每次要用的时候都是去翻语法,本身记笔记没什么不好,但是在面试的时候,特别是手写代码还不让调试,是很考验基本功和基础语法的,所以能记还是尽量记住,这样还能提高写代码的效率,还有就是要多用,多实践)

这是实现对象继承时最简单的遍历对象继承,里面用到的  in  关键字

1. 最常用的是在for in 循环中 遍历对象的键

2. 判断属性是否存在于对象中

语法   属性名 in 对象    //返回布尔值true  or  false

//例子
var animal = {
name:"Animal",
sex:"male",
age:5,
bark:function(){
console.log("Animal bark");
}
}; var dog = {}; for (var k in animal){
//k可以获取到对象的每一个属性
//animal [k]可以获取到对象的每一个属性的值
//这里使用k给对象新增属性的时候,不可以使用点语法,因为k是一个字符串
dog[k]= animal[k]; }

 2.排序算法,不应该仅仅满足于知道就好,还有动手敲,思考异同,在需要使用时能够信手拈来。

3.以后写类似算法编程题的时候,特别是面试的时候,先把思路整理清楚,在注释中分一二三步写清楚,这样后面在代码实现的过程中思路不会混乱,不会写叉。以后自己再回顾的时候也会一目了然,同时工作之后也方便同事交流,工作交接。

cvte2018春招前端开发实习面试分享的更多相关文章

  1. 【字节校招】【实习】【内推】字节跳动春招(校招或实习均可)以及日常实习内推ing

    本人是年前刚刚入职抖音的应届生,职业认证还未来的级更改,但是这些都不重要.重要的是我们不能错过优秀的你~ 字节跳动的相关福利我就不介绍了,技术实习生是400/天,房补是1500/月,三餐免费,下午茶, ...

  2. Web前端开发笔试&面试_01(mi:)

    —— (al_me16041719002000) begin—— 1.(单选)下面哪个方法是String对象和Array对象都有的? A.splice B.split C.replace D.conc ...

  3. 科蓝软件急招前端开发、PHP、.NET工程师

    职位:前端开发 工作年限:不限     学历要求:大专     招聘人数:2   专业:不限    薪酬:面议 工作地点:浙江嘉兴.北京 岗位职责: 1.负责公司项目的UI设计: 2.负责将UI静态化 ...

  4. 【我的面试-01】Web前端开发实习岗-面试题总结

    简单开头 首先技术面试官会根据简历里所写的项目和个人掌握技术栈提问(我不知道已经改过多少次简历了,因为前期投简历是真的是沉在茫茫大海,捞漂流瓶都捞不到的那种) 我的技术栈:(Vue还在苦苦的自学当中, ...

  5. 淘宝web前端开发岗面试经历及感悟

    今天下午四点接到淘宝UED的面试电话,很突然,很激动.现在怀着淡淡的忧伤为之文以志一下. 1.自我介绍一下. 我xx时候毕业,在xx公司任xx职务,主要负责xx balabala.(怕公司同事听到,接 ...

  6. 亲历腾讯WEB前端开发三轮面试经历及面试题

    [一面]~=110分钟  2014/09/24 11:20  星期三 进门静坐30分钟做题. 填空题+大题+问答题 >>填空题何时接触电脑 何时接触前端运算符 字符串处理        延 ...

  7. 腾讯WEB前端开发三轮面试经历及面试题

    [一面]~=110分钟  2013/04/24 11:20  星期三 进门静坐30分钟做题. 填空题+大题+问答题 >>填空题何时接触电脑 何时接触前端运算符 字符串处理        延 ...

  8. Web前端开发笔试&面试_02(others)

    AL>> 1.CSS 3 如何实现旋转图片? 答:transform : rotate 2.写CSS 的工具? 答:LESS.SASS 3.JavaScript 倒计时? 答:setTim ...

  9. Web前端开发笔试&面试_04_20161019MTBS

    1.运用CSS3 ,实现div 沿Y 轴上下循环运动的动画. 我写是:-webkit-animation:xz 3s linear 1s infinite //即XZ轴变化,Y轴不变 正确答案是: & ...

随机推荐

  1. memmove和memcpy函数的区别及实现

    一.memmove()和memcpy()函数和strcpy()函数的区别: (1)使用的类型不同,strcpy()函数只对字符串进行操作:memmove()和memcpy()函数对所有类型都适用,为内 ...

  2. sshd_config参数说明

    SSHD_CONFIG(5) OpenBSD Programmer's Manual SSHD_CONFIG(5)名称 sshd_config - OpenSSH SSH 服务器守护进程配置文件大纲 ...

  3. FireDAC 如何按整型(Byte)读取 MySQL TinyInt(1) 类型字段?

    最近使用 MySQL 发现 FireDAC 中查询 TinyInt(1) 字段结果是 Boolean 类型,这并不是我想要的结果,而TinyInt(1)的范围是-128-127之间,如何按整型读取呢? ...

  4. DjangoRestful 递归嵌套序列化器实现

    **** 由于博客园不支持markdown语法,所以推荐以下链接阅读: 原创 https://blog.csdn.net/weixin_42495873/article/details/8943354 ...

  5. Linux 基础 目录介绍

    /bin           存放二进制可执行文件(ls  cat   clear)等等 ,常用基础命令在这个目录下 /etc           存放系统管理和配置文件   如 passwd   用 ...

  6. 『Python基础练习题』day05

    # 请将列表中的每个元素通过 "_" 链接起来. users = ['毛利兰', '柯南', '怪盗基德'] # 请将元组 v1 = (11, 22, 33) 中的所有元素追加到列 ...

  7. SQL Server邮件标识点

    <br>---换行 &nbsp:---空格 <H1></H1>---标题 --定义表格格式 N'<table border="1" ...

  8. mysql把A表数据插入到B表数据的几种方法

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

  9. ubuntu无法安装usb驱动

    第一步: 输入命令 lsusb 箭头指向的就是连接的手机 第二步: 输入命令,新建并打开文件 sudo gedit /etc/udev/rules.d/-android.rules [注意]如果提示没 ...

  10. 解决 google 浏览器记住密码导致输入框样式改变(变成淡黄色背景)

    直接在页面上使用css代码: input:-webkit-autofill , textarea:-webkit-autofill, select:-webkit-autofill { -webkit ...