笔试题
面试中遇到的笔试题,后面可能会继续补充。
笔试题(2023)
自定义一个useInterval的hoohs,设计一个计时器
1 | import React, { useEffect, useState } from 'react' |
倒计时10秒,按钮点击之后,禁止点击,10秒后恢复
1 | import React, { useState } from 'react' |
随机给出数组,如 [1234,1234567,1234,12,12,123456781234512]; 根据数字长度,实现方法,能够对各元素进行组合排列,实现瀑布流的展示,数组元素以红块包裹。
要求:
- 每行最多容纳三个红块 (数组元素)
- 每行最多容纳 8 个数字长度,超出需换行 (仅100%宽度红块可换行)
- 每个数组元素有三种宽度形式
- 33% 宽度,最多容纳 2 个数字长度,最少容纳 1 个数字长度
- 50% 宽度,最多容纳 4 个数字长度,最少容纳 3 个数字长度
- 100% 宽度,最大容纳无限制,最少容纳 5 个数字长度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44import React from "react";
export default function WaterfailFlow() {
let data = [1234, 1234567, 1234, 12, 12, 1234, 12345678123456132465, 12, 1];
const getWidthClass = (length) => {
if (length <= 2 && length >= 1) {
return "span 2";
} else if (length <= 4) {
return "span 3";
} else {
return "span 6";
}
};
return (
<div>
<div
style={{
display: "grid",
gridTemplateColumns: "repeat(6, 1fr)",
gridAutoFlow: "row dense",
gap: 2,
}}
>
{data.map((v) => {
let str = String(v);
let strLen = v.toString().length;
let obj = getWidthClass(strLen);
let arr = [];
if (strLen > 8) {
for (let i = 0; i < strLen; i += 8) {
console.log("i", i);
const group = str.slice(i, i + 8);
arr.push(group);
}
}
return (
<div style={{ backgroundColor: "red", gridColumnStart: obj }}>
{strLen <= 8 ? v : arr.map((item) => <div>{item}</div>)}
</div>
);
})}
</div>
</div>
);
}
-------------本文结束感谢您的阅读-------------