楼主网申了网易的前端开发岗,两周后发来了网易的笔试邀请并附上了连接。前端
整个笔试分为三部分,选择,编程和解答。楼主底子不好,此次笔试也只是试水。在发现大部分笔试题不会以后,没有解答完就提交了。(捂脸)编程
下面是笔试部分记录:测试
编程部分spa
一、小Q获得一个神奇的数列:1,12,123,........12345678910,1234567891011...code
而且小Q对于可否被3整除这个性质很感兴趣。小Q如今但愿你能帮助他计算一下从数列的第1个到第r个(包含端点)。blog
输入描述:three
输入包括两个整数l 和 r(1 <=l <= r <= 1e9),表示要求解的区间两端。开发
输出描述:字符串
输出一个整数,表示区间能被3整除的数字个数。it
举例:输入:2 5 输出: 3;
表示12,123,1234,12345 中能被3 整除的数有3个。
二、牛牛之前在老师那里获得了一个正整数数对(x,y,),牛牛忘记他们具体是多少了。可是牛牛记得老师告诉过他x和y均不大于n,而且x除以y的余数大于等于k,牛牛但愿你能帮他计算一共有多少个可能的数对。
输入描述:输入包括两个整数,n,k(1 <= n <= 10^5,0 <= k <= n -1)。
输出描述:对于每一个测试用例,输出一个正整数表示可能的数对数量。
举例:输入:5 2 ;输出: 7。 知足条件的数对有:(2,3) ;知足条件的数对有(2,3)(2,4)(2,5)(3,4)(3,5)(4,5)(5,3);
三、牛牛去犇犇老师家补课,出门的时候面向北方,可是他如今迷路了,虽然他手里有一张地图,可是他须要知道本身面向的是哪一个方向。请你帮助他。
输入描述:
每一个输入包含一个测试用例。
每一个输入包含一个测试用例,每一个测试用例的第一行包含一个正整数,表示转的方向的次数N(N<=1000)。
接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。
输出描述:
输出牛牛最后的面向的方向,N表示北,S表示南,E表示东,W表示西。
小Q数列问题: ------------------------------ 输入:2 5 输出:3 */ console.log("【小Q数列结果】一共有" + three(2, 5) + "个"); // 检查结果 function three(num1, num2) { let tmpFirst = ""; // 开端数字 let tmpSecond = ""; // 结束数字 let threeNumber = 0; // 整除3的数量 for (let index = 1; index <= num1; index++) { tmpFirst += index.toString(); } console.log("小Q数列-- " + "开端数字是" + tmpFirst); // 获得开端数字 for (let index = 1; index <= num2; index++) { tmpSecond += index.toString(); if (tmpSecond >= tmpFirst && tmpSecond % 3 == 0) { // 取得区间数字,并整除3 threeNumber += 1; console.log("小Q数列-- " + "数字 " + tmpSecond + " 能够整除3"); } } return threeNumber; } /* 牛牛数对问题: ------------------------------ 输入:5 2 输出:7 */ console.log("【牛牛数对结果】一共有" + pair(5, 2) + "个"); // 检查结果 function direction(n, k) { let pairNumber = 0; // 数对数量 for (let indexX = 1; indexX <= n; indexX++) { // indexX是数对左边数字 for (let indexY = 1; indexY <= n; indexY++) { // indexY是数对右边数字 if (indexX % indexY >= k) { // 计算余数是否等于k pairNumber += 1; console.log("牛牛数对-- " + "数对 (" + indexX + "," + indexY + ") 符合"); } } } return pairNumber; } /* 牛牛转向问题: ------------------------------ 输入:3 LRR 输出:E */ console.log("【牛牛转向结果】方向是" + direction(3, "LRR")); // 检查结果 function direction(number, action) { let leftNum = 0; // 左转次数 let rightNum = 0; // 右转次数 for (let index = 0; index < action.length; index++) { action[index] == "L" ? leftNum += 1 : rightNum += 1; //取得左转和右转几回 } console.log(leftNum,rightNum); let result = Math.abs(leftNum * (-1) + rightNum * 1); // 最终转的次数(左转一次和右转一次会抵消) let directionValue = 1 + result % 4; //数字4是一圈,因此取余数就是最终方向;初始方向是北,因此加1 switch (directionValue) { case 1: return "N"; // 1表明北 case 2: return "E"; // 2表明东 case 3: return "S"; // 3表明南 case 4: return "W"; // 4表明西 } }