昨天(9.13)參加了華爲2018屆的技術崗筆試,特此總結一下筆試的題目和我我的的解答思路。
筆試題一共是三道編程題,大體是數值反向輸出,比較和排序,相對較基礎。
PS:因爲沒有截圖,因此題目是根據我本身的記憶複述的,各位見諒(¯﹃¯)
。
博文地址:華爲2018屆校招技術崗筆試題及我的解答git
題目:es6
輸入一個整數(含負數),輸出3個數據,以下: 1.輸出該整數的位數; 2.將該整數各位拆分輸出,中間以空格隔開(注意末位不能有空格)。若是是負數,則符號與第一個數一塊兒輸出; 3.輸出該數的反轉數,如爲負數,符號位置不變,置於最前。
示例
輸入:github
-12345
輸出:編程
5 -1 2 3 4 5 -54321
個人代碼以下(JavaScript-Node):bash
/*** Node輸入輸出模塊 相似Java的Scanner ***/ var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); /* rl.on("line",function(data)) 監聽輸入,data爲每次輸入的的一行數據,每輸入新行便觸發一次function(data) */ rl.on("line", function (data) { var num_space; var num_reverse; if (data[0] == "-") { num_space = "-" + data.slice(1).split("").join(" "); /** 2.含空格整數 **/ num_reverse = "-" + data.slice(1).split("").reverse().join(""); /** 3.反轉整數 **/ console.log((data.length - 1) + "\n" + num_space + "\n" + num_reverse); } else { num_space = data.split("").join(" "); /** 2.含空格整數 **/ num_reverse = data.split("").reverse().join(""); /** 3.反轉整數 **/ console.log(data.length + "\n" + num_space + "\n" + num_reverse); } });
題目:函數
輸入4個IP值組成兩個IP段: 第1、二行分別爲第一個IP段的起始和結尾IP,第3、四行爲第二個IP段的起始和結尾。 要求輸出: 若兩個IP段有交集則輸出"Overlap IP",沒有則輸出"No Overlap IP"。
示例
輸入:ui
1.1.1.1 255.255.255.255 2.2.2.2 3.3.3.3
輸出:spa
Overlap IP
個人代碼以下(JavaScript-Node):code
/*** Node輸入輸出模塊 相似Java的Scanner ***/ var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); /*** rl.on("line",function(ip)) 監聽輸入,ip爲每次輸入的一行數據,每輸入新行便觸發一次function(ip) ***/ var ips = new Array(0);//存儲4個IP值 rl.on("line", function (ip) { /* IP值處理,轉爲易比較方式 */ if (ips.length < 4) { /** 存儲的IP數小於4個則繼續處理並存儲 **/ ips[ips.length] = ip.split(".").map(function (x) { //坑爹,筆試環境不支持es6,不能用箭頭函數 if (3 - x.length) { x = (3 - x.length > 1 ? "00" : "0") + x; } return x; }).join("");//join("")沒必要需,比較時自動toString(),雖然各項之間有逗號但不影響比較結果 } /** 4個IP均已得到,開始比較 **/ if (ips.length == 4) { if (ips[2] > ips[1] || ips[3] < ips[0]) console.log("No Overlap IP"); else console.log("Overlap IP"); ips = [];//清空ips,爲下次輸入作準備 } });
題目:排序
輸入兩行數據,第一行包含多個正整數,以空格分開,根據每一個數的後三位大小進行排序;第二行爲數值n,輸出排序後指定位置n的數。 要求: 1.若數不足三位,則直接比較; 2.若兩數比較結果相等,則兩數相對位置不變。 要求輸出: 排序後第n個數(位置從1開始)。
示例
輸入:
12 450 9001 5231 8231 7231 5
輸出:
7231
個人代碼以下(JavaScript-Node):
/*** Node輸入輸出模塊 相似Java的Scanner ***/ var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); /* rl.on("line",function(data)) 監聽輸入,data爲每次輸入的一行數據,每輸入新行便觸發一次function(data) */ var nums = new Array(0); rl.on("line", function (data) { if (!nums.length) { nums = data.split(" ").sort(function (x1, x2) { if (x1.length > 2) x1 = x1.slice(-3); //截取從倒數第三位到結尾的字符串 if (x2.length > 2) x2 = x2.slice(-3); return x1 - x2; //返回負數則x1排在x2前面 }); } else { console.log(nums[data - 1]); nums = []; //清空nums } });
華爲的筆試編程題整體來講比較基礎(或者我分到的題目比較簡單?哈哈),主要是排序、比較類的題目。看來華爲仍是很給咱們面子的哈哈<( ̄︶ ̄)>
。
另外,我用的是 JavaScript
,由於題目比較簡單,好理解,全部沒有太多註釋,其餘語言的同窗歡迎參考,語言都是相通的。
另外你們以爲不錯的話,但願能點個贊,謝謝!