Skip to content

Commit cf204b0

Browse files
committed
添加笔试题真题
1 parent 117c73d commit cf204b0

File tree

13 files changed

+353
-15
lines changed

13 files changed

+353
-15
lines changed

main.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// import './树/Bst'
22

3-
// import './链表/main'
3+
import './链表/main'
44

5-
import './string/main'
5+
// import './string/main'
6+
7+
// import './动态规划/main'

string/main.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ import { checkZeroOnes, maximumWealth, numIdenticalPairs, numJewelsInStones } fr
66

77
// console.log( numIdenticalPairs( ) )
88

9-
console.log( checkZeroOnes() )
9+
// console.log( checkZeroOnes() )
10+
11+
import './string'

string/string.js

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,41 @@ export var numIdenticalPairs = function (nums = [1, 2, 3, 1, 1, 3]) {
129129
export var checkZeroOnes = function (s = "1") {
130130
const one = s.match(/1+/g) || []
131131
const o = s.match(/0+/g) || []
132-
let onelen = 0,olen = 0;
133-
one.forEach( ele => ele.length > onelen ? onelen = ele.length : null)
134-
o.forEach( ele => ele.length > olen ? olen = ele.length : null)
135-
if(onelen > olen){
132+
let onelen = 0, olen = 0;
133+
one.forEach(ele => ele.length > onelen ? onelen = ele.length : null)
134+
o.forEach(ele => ele.length > olen ? olen = ele.length : null)
135+
if (onelen > olen) {
136136
return true
137137
}
138138
return false
139-
};
139+
};
140+
// 图解字节&拼多多&leetcode14:最长公共前缀
141+
// 输入: ["flower","flow","flight"]
142+
// 输出: "fl"
143+
/**
144+
*
145+
* @param { string[] } strs
146+
*/
147+
const findMaxLength = (strs) => {
148+
if (!strs || strs.length === 0) return strs;
149+
let firstStr = strs[0]
150+
for (let i = 1; i < strs.length; i++) {
151+
let j = 0;
152+
for (; j < firstStr.length && j < strs[i].length; j++) {
153+
if (firstStr[j] !== strs[i][j]) break
154+
}
155+
firstStr = firstStr.substr(0, j)
156+
}
157+
return firstStr
158+
}
159+
/**151. 翻转字符串里的单词
160+
* @param {string} s
161+
* @return {string}
162+
*/
163+
var reverseWords = function (s) {
164+
if( !s || s.length === 0) return '';
165+
return s.trim().split(' ').filter( ele => ele !== '' ).reverse().join(" ")
166+
};
167+
// console.log(findMaxLength(["flower", "flow", "flight"]))
168+
169+
console.log(reverseWords("a good example") )

utils/linkList.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export const findLinkEnd = (root) => {
77
if (root.next == null) return root;
88
return findLinkEnd(root.next)
99
}
10+
11+
1012
/**
1113
* 通过类数组索引找到当前元素
1214
* @param {*} root

动态规划/main.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { climbStairs, jump } from "./爬楼梯问题";
2+
3+
console.log( jump(10), climbStairs(10) )

动态规划/爬楼梯问题.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
export var climbStairs = function (n) {
6+
const dp = { '1': 1, "2": 2 }
7+
return (() => {
8+
if (dp[n]) {
9+
console.log(dp[n])
10+
return dp[n]
11+
}
12+
if (n <= 0) return 0
13+
console.log(climbStairs(n - 1) + climbStairs(n - 2))
14+
dp[n] = climbStairs(n - 1) + climbStairs(n - 2)
15+
})()
16+
};
17+
18+
export function jump(n) {
19+
if (n <= 0) return -1;
20+
if (n == 1) return 1;
21+
if (n == 2) return 2;
22+
return jump(n - 1) + jump(n - 2);
23+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
请用您熟悉的语言完成如下功能,并提供源代码
2+
3+
这是一个将参数配置json文件,转换成列表格式json的需求。
4+
读取文件params.json
5+
提取其中的信息,转换成target.json,格式范例见target_sample.json
6+
规则如下:
7+
没有id的对象不需要转换
8+
id>=8000的对象不需要转换
9+
在id转换成name的时候,在id前加上“flaw_type_”拼接成name
10+
nickName是show属性的转换
11+
子对象的nickName 是父对象的的show属性加上“_”下划线,再加自身的show属性拼接而成。
12+
在实际应用中,params.json 是因每个项目不同,内容会有增减,但是格式不会发生变化,请在代码中考虑到通用化的情况。
13+
14+
在实现功能的基础上考虑通用性的情况,比如现在是嵌套两层,如果三层四层怎么办,如果字段不是id怎么办等等情况
15+
16+
要求:
17+
1. 独立完成
18+
2. 考虑通用性(包括但不限于上述写的两种情况)
19+
20+
21+
题目做完后请将此文件夹的名称由leaper_data_trans改为您的姓名+联系方式,并把简历放到文件夹中,然后发回邮箱[email protected]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const { writeFileSync } = require('fs')
2+
3+
const flatObj = (data, result = [], prevShow = '', keyName = 'id') => {
4+
if (data instanceof Object === false) return;
5+
for (const key in data) {
6+
let path = prevShow;
7+
const ele = data[key];
8+
const attr = ele.Attributes;
9+
if (!(attr instanceof Object)) continue
10+
const id = attr[keyName]
11+
if (id && id < 8000) {
12+
result.push({
13+
name: id,
14+
nickName: path + attr.show
15+
})
16+
path += attr.show + '_';
17+
}
18+
if (key !== "Attributes") flatObj(data[key], result, path)
19+
}
20+
}
21+
22+
/**
23+
* @param {*} fileName
24+
* @param {*} targetFileName
25+
* @returns
26+
*/
27+
const dataTransfromToFile = (fileName, targetFileName) => {
28+
const data = require(fileName)
29+
const res = []
30+
flatObj(data, res)
31+
console.log(res)
32+
writeFileSync(targetFileName, JSON.stringify(res))
33+
}
34+
35+
dataTransfromToFile('./params.json', "./test.json")
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
{
2+
"g_unKown": {
3+
"Attributes": {
4+
"alarmnum": 10,
5+
"analysis": false,
6+
"color": "#ff6600",
7+
"id": 8000
8+
}
9+
},
10+
"主要缺陷": {
11+
"Attributes": {
12+
"color": "#aa0000",
13+
"enable": true,
14+
"algorithm_id":1913,
15+
"id": 1300,
16+
"show": "大型缺陷"
17+
},
18+
"Level_0": {
19+
"Attributes": {
20+
"color": "#bb0000",
21+
"enable": true,
22+
"algorithm_id":1913,
23+
"id": 1301,
24+
"show": "可见"
25+
}
26+
},
27+
"Level_1": {
28+
"Attributes": {
29+
"color": "#aa0010",
30+
"enable": true,
31+
"algorithm_id":1413,
32+
"id": 1302,
33+
"show": "不可见"
34+
}
35+
},
36+
"min": {
37+
"show": "最小像素数",
38+
"unit": "",
39+
"value": 25
40+
}
41+
},
42+
"颜色缺陷": {
43+
"Attributes": {
44+
"color": "#aa0010",
45+
"enable": true,
46+
"algorithm_id":913,
47+
"id": 1200,
48+
"show": "白点"
49+
},
50+
"Level_0": {
51+
"Attributes": {
52+
"color": "#aa0010",
53+
"enable": true,
54+
"algorithm_id":1413,
55+
"id": 1201,
56+
"show": "微小白点"
57+
}
58+
},
59+
"Level_1": {
60+
"Attributes": {
61+
"color": "#aa0010",
62+
"enable": true,
63+
"algorithm_id":1413,
64+
"id": 1202,
65+
"show": "小白点"
66+
}
67+
},
68+
"Level_2": {
69+
"Attributes": {
70+
"color": "#aa0010",
71+
"enable": true,
72+
"algorithm_id":1413,
73+
"id": 1203,
74+
"show": "中白点"
75+
}
76+
},
77+
"Level_3": {
78+
"Attributes": {
79+
"color": "#aa0010",
80+
"enable": true,
81+
"algorithm_id":63,
82+
"id": 1204,
83+
"show": "大白点"
84+
}
85+
},
86+
"Level_4": {
87+
"Attributes": {
88+
"color": "#aa0010",
89+
"enable": true,
90+
"algorithm_id":213,
91+
"id": 1205,
92+
"show": "超大白点"
93+
}
94+
}
95+
},
96+
"纹路": {
97+
"Attributes": {
98+
"color": "#aa0010",
99+
"enable": true,
100+
"algorithm_id":1413,
101+
"id": 1700,
102+
"show": "划痕/划伤"
103+
},
104+
"Level_0": {
105+
"Attributes": {
106+
"color": "#aa0010",
107+
"enable": true,
108+
"algorithm_id":23,
109+
"id": 1701,
110+
"show": "条纹"
111+
}
112+
},
113+
"ashow": {
114+
"max": 50,
115+
"show": "横条纹灵敏度",
116+
"unit": "等级",
117+
"value": 10
118+
},
119+
"minLineHeight": {
120+
"max": 50,
121+
"show": "最小条纹长度",
122+
"unit": "等级",
123+
"value": 10
124+
},
125+
"verLineFliterGradient": {
126+
"max": 50,
127+
"show": "竖条纹灵敏度",
128+
"unit": "等级",
129+
"value": 0
130+
}
131+
},
132+
"webconfig":{
133+
"Attributes": {
134+
"host":"192.168.1.1",
135+
"port":"8008"
136+
}
137+
}
138+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[
2+
{
3+
"name":"flaw_type_1300",
4+
"nickName":"大型缺陷"
5+
},
6+
{
7+
"name":"flaw_type_1301",
8+
"nickName":"大型缺陷_可见"
9+
},
10+
{
11+
"name":"flaw_type_1302",
12+
"nickName":"大型缺陷_不可见"
13+
},
14+
{
15+
"name":"flaw_type_1200",
16+
"nickName":"白点"
17+
},
18+
{
19+
"name":"flaw_type_1201",
20+
"nickName":"白点_微小白点"
21+
},
22+
{
23+
"name":"flaw_type_1202",
24+
"nickName":"白点_小白点"
25+
},
26+
{
27+
"name":"flaw_type_1203",
28+
"nickName":"白点_中白点"
29+
},
30+
{
31+
"name":"flaw_type_1204",
32+
"nickName":"白点_大白点"
33+
},
34+
{
35+
"name":"flaw_type_1205",
36+
"nickName":"白点_超大白点"
37+
},
38+
{
39+
"name":"flaw_type_1700",
40+
"nickName":"划痕/划伤"
41+
},
42+
{
43+
"name":"flaw_type_1701",
44+
"nickName":"划痕/划伤_条纹"
45+
}
46+
]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{"name":1300,"nickName":"大型缺陷"},{"name":1301,"nickName":"大型缺陷_可见"},{"name":1302,"nickName":"大型缺陷_不可见"},{"name":1200,"nickName":"白点"},{"name":1201,"nickName":"白点_微小白点"},{"name":1202,"nickName":"白点_小白点"},{"name":1203,"nickName":"白点_中白点"},{"name":1204,"nickName":"白点_大白点"},{"name":1205,"nickName":"白点_超大白点"},{"name":1700,"nickName":"划痕/划伤"},{"name":1701,"nickName":"划痕/划伤_条纹"}]

链表/leetcode160相交链表.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { mapArruyToLinklist } from "./main";
2+
3+
/**
4+
* @param {ListNode} headA
5+
* @param {ListNode} headB
6+
* @return {ListNode}
7+
*/
8+
export var getIntersectionNode = function (headA, headB) {
9+
while(headA){
10+
headA.flag = true
11+
headA = headA.next
12+
}
13+
while(headB){
14+
if(headB.flag) return headB;
15+
headB = headB.next
16+
}
17+
return null
18+
};

0 commit comments

Comments
 (0)