JavasJavaScript笔试题
这几天参加了好多场宣讲会,记录一下遇到的编程题还有平时练习遇到的(如果有更好的方法欢迎提出,本人也是菜鸟一枚):
1.数组查重,并返回出重复次数最多的项并记录重复次数:
function chachong(arr){
arr = arr.sort(); //排序
var b=[],max={},c=[],t;
b[0] = {val:arr[0],count:1};
for(var i = 1; i<arr.length; i++){ //去重
if(arr[i] != b[b.length-1].val){
b.push({val:arr[i],count:1});
}else{
b[b.length-1].count++; //记录次数
}
} for(var n = b.length-1; n>0; n--){ //按重复次数排序
for(var m = 0; m<n; m++){
if(b[m].count > b[m+1].count){
t = b[m];
b[m] = b[m+1];
b[m+1] = t;
}
}
}
console.log(b)
max = b[b.length-1];
c.push(max);
for(var j = b.length-2; j>0; j--){
if(b[j].count>=max.count){
c.push(b[j]);
}
break;
}
return c;
}
结果:
次数最多是‘aa’和3,都为两次;
2.分苹果:
n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。
function fn(arr){
var total = 0,b=[],small=0,len = arr.length;
for(var i=0;i<len;i++){ //求出苹果总数
total+=arr[i];
}
console.log(total);
if(total%len!=0){ //判断是否能够平分
return -1;
}
var a = total/len; //平均数
console.log(a);
b = arr.map(function(item){return a-item;}); //求差值
console.log(b);
for(var j=0;j<b.length;j++){ //判断每个有多余苹果的牛身上的苹果是否能够分完
if(b[j]%2!=0){
return -1;
}
}
b.forEach(function(item){ //移动次数即为差值为正的数的总和除2
if(item>0){
small+=item;
}
}); return small/2;
}
运行结果:
3.各种正则表达式验证:
a.匹配邮箱:邮箱的具体规则我也不是特别清楚,百度了也没找到很清晰的规则,大致就是(1)@(2).(3)这样三个分组,第一个分组中可以包含字母数字下划线和‘.’还有‘-’,第二个分组是主机名,只能包含字母数字和‘-’,第三个分组是后缀,这里的后缀有的是com有的是com.cn等等组合比较多,下面是我自己写的,如果有错误请指出:
var pattern = /^([\w\.\-]+)@([0-9a-zA-Z\-]+)\.([a-zA-Z]+(\.[a-zA-Z]+)*)$/;
测试结果:
b.电话号码验证:做这题的时候很懵,因为根本不知道手机号的格式是什么,只知道有11位,而且固定电话就更不知道了,后来是看了这篇博客,这个可以去原博看看,他用的Java其实正则都差不多,我就复制了下:
/*手机号
*移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147、182
* 联通号码段:130、131、132、136、185、186、145
* 电信号码段:133、153、180、189、177
*/
var pattern = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[01256789])|(177))\d{8}$/
测试结果:
//固定电话
var pattern = /^(0\d{2}-\d{8}(-\d{1,4})?)|(0\d{3}-\d{7,8}(-\d{1,4})?)$/;
测试结果:
4.58同城今年的校招题目:为String对象添加一个route方法,实现一下效果:
var url = 'https://www.baidu.com/one/two';
url.route('/a/:b') //{b:'two'}
url.route('/:a/b') //{a:'one'}
url.route('/:a/:b') //{a:'one',b:'two'}
下面是我的实现方法:
var url = 'https://www.baidu.com/one/two';
String.prototype.route = router;
function router(str){
var val = this.toString(),a=[],b=[],result={};
var pattern = /(?:[a-z]+\:\/\/)(?:[\w\.]+)\/([\w]+)\/([\w]+)/; //提取出尾部参数
a=pattern.exec(val).slice(1);
console.log(a);
var pattern1 = /^\/(\:?[a-z]+)\/(\:?[a-z]+)/; //也是提取参数
b=pattern1.exec(str).slice(1);
console.log(b);
for(var i = 0;i<b.length;i++){
if(b[i].indexOf(':')!=-1){
console.log(b[i])
var v = b[i].slice(1);
result[v]=a[i];
}
}
return result;
测试结果:
JavasJavaScript笔试题的更多相关文章
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- flhs笔试题-回家上机实践
这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...
- 也许你需要点实用的-Web前端笔试题
之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...
- [c#基础]关于try...catch最常见的笔试题
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...
- js作用域之常见笔试题,运行结果题
笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...
- 【Android】一道Android OpenGL笔试题
一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...
随机推荐
- 集群 openfire
openfire_3.8.2集群配置 测试机4台1.四台机器都安装openfire,随即一台安装mysql,执行openfire_mysql.sql脚本.2.四台机器都配置到同一个mysql机器上(不 ...
- hdu-5804 Price List(水题)
题目链接: Price List Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Othe ...
- Python IOError: [Errno 13] Permission denied:
一般是代码写错了,比如我遇到的问题就是由于 os.listdir() 传参传错导致的. 本应该传入字符串路径名,但传入了一个文件对象(object)
- PHP中读写文件
在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: 复制代码代码如下:fopen(filename,mode) filename,规定要打开的文件.mode,打开 ...
- STL容器特征总结与迭代器失效
Vector 内部数据结构:连续存储,例如数组. 随机访问每个元素,所需要的时间为常量. 在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化. 可动态增 ...
- 注意!!一定要谨慎使用c/c++原生指针
使用指针,要非常小心,今天在做一个小游戏时,就碰到一个使用原生指针的问题,找了好几个小时,才定位到问题的所在,晕. 主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了.这种在代码量很少的情况 ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 深入浅出Javascript的正则表达式
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- 2-3 Flutter开发环境与iOS开发环境设置(Mac)
Mac下环境搭建 先不看了 都是Mac下的环境搭建
- iOS ipa包重签名
背景:公司做游戏SDK的,提供SDK给第三方后,他们打包过来我们需要分发在不同的渠道,这个时候需要修改SDK的配置文件,ipa文件修改后是需要手机越狱或者ipa重签名才能安装成功的,所以研究了一下重签 ...