2022.11.8 ONES 前端笔试
这好像是思否的母公司?讨论的人数好低,
豪哥666
选择题
- 对
2022/11/06的Date对象分别调用getMonth/getDate/getDay的结果是?- 结果是:
10/6/0,考察Date|API的八股
- 结果是:
- 操作系统的功能不包括
- 用户管理 - 不包括这个
- 进程管理
- 处理机、设备管理
- 存储管理
input进入页面自动获取焦点的属性是?autofocus,值为Boolean类型,参考 autofocus - MDN
- 关于
IP数据报尽最大努力交付理解错误的是?太过偏僻的八股,完全没见过 TCP三次握手中第三次握手发送的TCP段的TCP头的标志位是什么?ACK- 正确答案SYN + ACKSYN
undefined + undefined,ps: 这是一道考察this指向的问题,但this比较简单,反而是输出判断比较难- 下面哪个状态码会发送两次请求?
- 304 - 协商缓存的状态码,先请求服务器判断是否
- 302
- 404
- 401
- 网卡实现的主要功能是?
- 物理层和数据链路层之间 - answer
- 数据链路层和网络层之间
- 网络层和传输层之间
- 传输层和应用层之间
-
- 构建
DOM树 2. 构建CSS树 3. 绘制render树 4. 布局render树 5. 构建render树,请问1-5的顺序是? - answer: 1-2-5-4-3
- 构建
- 执行以下程序,对于下列选项的选择器,能且仅能选中第一个
<p>标签的一项是?参考CSS 选择器.box p {}p~p {}- 正确答案div+p {}.box>p {}
<div class="box">
<div></div>
<p></p>
<p></p>
</div>
- 分析以下的排序过程对应的排序算法是哪一种?(升序排序)
- 插入排序 - 排除
- 选择排序 - 排除
- 归并排序 - 排除
- 冒泡排序
初始: 51 64 42 56 86 140 12 43
第一趟: 51 42 56 64 86 12 43 140
手撕
- 反转字符串,例如
123 -> 321 - 假设有
n个金币,按顺序(1 - n)一字排开,小A和 小B捡金币,小A从头开始捡到L位置,小B从后面开始捡到R位置,要求L < R,问他们两个捡到的金币差值的绝对值最小值和L|R位置是多少呢?
// 测试用例
// 5
// 1 2 3 4 5
// a: 1 3 5 min: 1, L: 3, R: 5
// 5
// 1 1 1 1 1
// a: 0 1 5
// 10
// 1 2 3 4 1 1 3 2 1 4
// a: 0 4 7
解法
只过了 65.97%,超时了,估计是 coinTotalToStart 和 coinTotalToEnd 超时了,每次调用都是 O(n),应该采用前缀和数组
也有同学指出可以使用首尾双指针解决这道问题
// 本题为考试多行输入输出规范示例,无需提交,不计分。
var readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false,
});
var n = -1; // 初始状态为负数,表示还没开始读取
var numsLength = -1;
var nums = [];
rl.on("line", function (line) {
if (n === -1) {
numsLength = parseInt(line.trim());
n++;
} else if (n === 0) {
nums = line.split(' ').map(val => Number(val));
n++;
const arr = nums;
function coinTotalToEnd(arr, start) {
let total = 0;
for (let i = start; i < arr.length; i++) {
total += arr[i];
}
return total;
}
function coinTotalToStart(arr, end) {
let total = 0;
for (let i = 0; i <= end; i++) {
total += arr[i];
}
return total;
}
let resArr = [];
let min = Number.MAX_SAFE_INTEGER;
function dfs(arr, l, r) {
if (l >= r) {
return;
}
const temp = Math.abs(coinTotalToStart(arr, l) - coinTotalToEnd(arr, r));
if (temp < min) {
resArr = [];
min = temp;
resArr.push([l, r]);
} else if (temp === min) {
resArr.push([l, r]);
}
dfs(arr, l + 1, r);
dfs(arr, l, r - 1);
}
dfs(arr, 0, arr.length - 1);
let minL = arr.length;
let minLIndex = undefined;
for (let i = 0; i < resArr.length; i++) {
if (resArr[i][0] < minL) {
minL = resArr[i][0];
minLIndex = i;
}
}
console.log(min, resArr[minLIndex][0] + 1, resArr[minLIndex][1] + 1);
}
});
前缀和解法
function PartialSum(nums) {
const preSum = new Array(nums.length + 1).fill(0);
for (let i = 1; i < preSum.length; i++) {
preSum[i] = preSum[i - 1] + nums[i - 1];
}
this.preSum = preSum;
}
PartialSum.prototype.sumRange = function (left, right) {
return this.preSum[right + 1] - this.preSum[left];
}
function coinTotalToEnd(arr, start) {
return partialSum.sumRange(start, arr.length - 1);
}
function coinTotalToStart(arr, end) {
return partialSum.sumRange(0, end);
}
// 本题为考试多行输入输出规范示例,无需提交,不计分。
var readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false,
});
var n = -1; // 初始状态为负数,表示还没开始读取
var numsLength = -1;
var nums = [];
var partialSum = null;
rl.on("line", function (line) {
if (n === -1) {
numsLength = parseInt(line.trim());
n++;
} else if (n === 0) {
nums = line.split(' ').map(val => Number(val));
n++;
const arr = nums;
partialSum = new PartialSum(nums);
let resArr = [];
let min = Number.MAX_SAFE_INTEGER;
function dfs(arr, l, r) {
if (l >= r) {
return;
}
const temp = Math.abs(coinTotalToStart(arr, l) - coinTotalToEnd(arr, r));
if (temp < min) {
resArr = [];
min = temp;
resArr.push([l, r]);
} else if (temp === min) {
resArr.push([l, r]);
}
dfs(arr, l + 1, r);
dfs(arr, l, r - 1);
}
dfs(arr, 0, arr.length - 1);
let minL = arr.length;
let minLIndex = undefined;
for (let i = 0; i < resArr.length; i++) {
if (resArr[i][0] < minL) {
minL = resArr[i][0];
minLIndex = i;
}
}
console.log(min, resArr[minLIndex][0] + 1, resArr[minLIndex][1] + 1);
}
});
#ones##ONES##笔试题目#
查看23道真题和解析
