2019年初考核题

栏目: JavaScript · 发布时间: 5年前

内容简介:本篇是继昨天我们部门(技术部)的年初能力考核后,整理出来的文章。以此鞭策自己在今年的工作上,树立清晰可见的目标,已达到最终预期的效果。1.有一个沙滩,有无穷多的沙子。现有2个空容器,分别可装为5kg和6kg的沙子。问题是如何只用这2个容器取得3kg的沙子?(10分)2.烧一根不均匀的绳从头烧到尾总共需要1个小时,如何用它来判断半个小时? 现在有3条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?(10分)

本篇是继昨天我们部门(技术部)的年初能力考核后,整理出来的文章。以此鞭策自己在今年的工作上,树立清晰可见的目标,已达到最终预期的效果。

题目:

1.有一个沙滩,有无穷多的沙子。现有2个空容器,分别可装为5kg和6kg的沙子。问题是如何只用这2个容器取得3kg的沙子?(10分)

2019年初考核题

2.烧一根不均匀的绳从头烧到尾总共需要1个小时,如何用它来判断半个小时? 现在有3条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?(10分)

2019年初考核题

3.你有四个装药丸的药罐,其中有一个药罐的药丸被污染,每个正常的药丸都有一定的重量,被污染的药丸是没被污染的重量+1,只称量一次,如何判断哪个药罐的药被污染了? (10分)

给四个罐子编上号,1、2、3、4.然后1号拿一个,2号拿2个,3号拿3个,4号拿4个,称一下,若是都没被污染,应该重10个重量,若是11个重量就是1号罐,12就是2号罐,13就是3号罐,14就是4号罐(此题不太严谨,取相对重量)

4.实现一个算法,确定一个英文字符字符串的所有字符是否全都不同。 给定一个string iniString,字符串的长度小于等于100,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。(20分)

测试样例: “aeiou” 返回:True “BarackObama” 返回:False

思路:把那个字符串全部取出来放进一个数组中,然后对那个数组去重得到一个新数组,前后两个数组长度一对比,如果一样,就没重复,返回true;如果不一样,就返回false。

function test(str){
    var arr=[];//把字符串中所有元素
    for(var i=0;i<str.length;i++){
        arr.push(str[i]);
    };
    //  arr = str.split("").join("");  
    //这个是听取同事建议,将上一步循环换成更加完美的转成数组的方式
    var newArr = Array.from(new Set(arr));
    if(arr.length == newArr.length){
        return true;
    }else{
         return false;
    }
}
test("aeiou");//true;
test("BarackObama");//false;
复制代码

5.实现一个算法,翻转一个给定的字符串。 给定一个string iniString,符串的长度小于等于100,请返回一个string,为翻转后的字符串。 (20分)

测试样例:

"This is nowcoder"          返回:"redocwon si sihT"
复制代码
var str = "This is nowcoder"; 
console.log( str.split("").reverse().join("") );//redocwon si sihT
复制代码

划重点对自己的英语水平,一直很自信,没成想最后居然把reverse写成deverse了,最有把握的一道题也凉凉了……

6.利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string iniString为待压缩的串(长度小于等于100),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的字符串。(30)

测试样例

"aabcccccaaa"              返回:"a2b1c5a3"
"welcometonowcoderrrrr"    返回:"welcometonowcoderrrrr"
复制代码
//取出字符串,判断重复停止,添加到新字符串中
function solution(str) {
  if(typeof str !== "string"){//类型不为字符串返回空
  	return '';
  }
  if (str.length <= 1){//直接返回源字符串
  	return str; 
  }
  let newStr = '';
  let s = str.charAt(0);
  let num = 1; //跳过第一个
  let total = str.length;
  for (let i = 1; i < total; i++) {
    let nowS = str.charAt(i);
    if (nowS === s) {
      num = num + 1; // 增加数量
      if (i + 1 === total) {
        newStr += `${s}${num}`; // 遍历结束时,拼接最后的字符串
      }
    } else {
      newStr += `${s}${num}`; // 拼接字符串
      num = 1; // 重置为1
      s = nowS; // 转为下一个字符s
    }
  }
  if (newStr.length >= str.length) {// 生成的字符串长度大于等于源字符串 返回源字符串 否则返回生成的字符串
    return str;
  } else {
    return newStr;
  }
};

console.log(
  '输出:',
  solution('welcometonowcoderrrrr'), 
  solution('aabcccccaaa'),
);//输出: welcometonowcoderrrrr a2b1c5a3
复制代码

结语:

韩老师点评到:类似于前三道的题目,在考公务员、智力竞赛这些方面都可以见到,平时也可以多了解了解,对开发智力也颇有帮助;后面三道,其实自己做过很多遍,也许因为各种不确定因素,总是展现出了不完美的一面。希望今后的叶叶再接再厉!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

React 进阶之路

React 进阶之路

徐超 / 清华大学出版社 / 2018-4 / 69.00元

《React进阶之路》详细介绍了React技术栈涉及的主要技术。本书分为基础篇、进阶篇和实战篇三部分。基础篇主要介绍React的基本用法,包括React 16的新特性;进阶篇深入讲解组件state、虚拟DOM、高阶组件等React中的重要概念,同时对初学者容易困惑的知识点做了介绍;实战篇介绍React Router、Redux和MobX 3个React技术栈的重要成员,并通过实战项目讲解这些技术如......一起来看看 《React 进阶之路》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具