编程题问题描述:

返回整数数组中出现次数第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. git和GitHub初级

    使用方式: 一种是本地创建一个文档, 然后在github上创建一个仓库, 在上传上去 一种是从仓库下载代码, 然后在本地编辑, 然后在上传上去 第一种: 首先在linux上创建一个文档, mkdir ...

  2. PHP-FPM配置与调优

    PHP-FPM是啥? PHP-FPM是一个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中. CGI是啥? CGI全称"公共网 ...

  3. Asp.Net Core中创建多DbContext并迁移到数据库

    在我们的项目中我们有时候需要在我们的项目中创建DbContext,而且这些DbContext之间有明显的界限,比如系统中两个DbContext一个是和整个数据库的权限相关的内容而另外一个DbConte ...

  4. 14 windows下安装pygame模块

    pycharm安装-推荐 file->setting->project->project interpreter->右边的+号,搜索pygame,点击下方的install pa ...

  5. SPA项目首页导航+左侧菜单

    Mock.js是个啥 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而今天的主角mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的 ...

  6. C++ 去掉字符串的首尾空格和全部空格

    #include <iostream>#include <string>using namespace std; //去掉收尾空格string& ClearHeadTa ...

  7. Mac下Sublime Text3激活码

    方法1: 终端中打开文件 /etc/hosts,插入如下语句 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 方法2: 在s ...

  8. PHP即时实时输出内容

    一般情况下,PHP都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端. for ($i = 0; $i < 10; $i++) { echo $i; sleep(1); } 这段代码会 ...

  9. 代码审计:covercms 1.6

    小菜只能找找没人用的cms练练手了 cnvd上有个 CoverCMS V1.16存在多个漏洞 漏洞描述 :CoverCMS V1.16存在重装.信息泄露.暴力破解.存储型跨站脚本和反射型跨站脚本漏洞. ...

  10. SQL Server2008 删除重复记录只剩一条(无Uid)

    INSERT INTO 表1   SELECT  *  FROM  视图1 CREATE TABLE  ##TMP01                                    ---创建 ...