滴滴(23春招)前端笔经
3.12
2、linux,脚本程序每次启动时自动执行,需要加入 /etc/rc.d/rc.local
3、自定义属性不正确的
A、名称中不能有特殊字符 B、data-后必须有一个字符,使用多个单词用+连接 C、不能使用数字 D、用data-开头
4、CSS控制单词间字母间距的是
A、word-spacing B、letter-spacing C、font-size D、font-weight
5、Linux作业ID的最小值 A、0 B、2 C、1 D、-1 init 进程(进程号为 1)
6、ts 中 interface 和 type 的区别,不正确 A、都可以描述一个对象或者函数 B、都允许拓展
C、interface 可以声明基本类型别名,联合类型,元组等类型 D、type 可以声明基本类型别名,联合类型,元组等类型
7、主存1MB,外存400MB,计算机地址寄存器32位,最大虚存
8、RSA中,p=11,q=23,e=3,d =? A、437 B、587 C、367
9、在集合A ={(xy)|x >=1 y>=1 x+y<= 4中,x+2y的最大值是
10、代码结果var x= 1;function one(){x=2;alert(x);}function two(){alert(x);}one();two();
11、fcntl函数中fd设置(),会在被调用后立即返回 A、O_BLOCK B、F_NONBLOCK C、F_BLOCK D、O_NONBLOCK
12、js sse不正确的是 A、与webSocket作用相似,都是建立浏览器与服务器之间的通道,然后服务器向浏览器推送信息
B、属于轻量级的,使用相对简单 C、使用http协议,现有的服务器软件都支持 D、默认支持传送二进制数据
13、进程管理错误的 A、单线程异步非阻塞模式通常在单核CPU情况下能够比多线程更充分利用资源
B、采用锁来访问现场共享资源时,如果加锁和解锁操作处在同一个线程中,则不会导致死锁
C、一个程序至少有一个进程,一个进程至少有一个线程 D、一个同步方法是一段时间内只允许一个线程进入执行
14、最好时间复杂度与最坏时间复杂度相同的排序算法 冒泡、简单选择 、快速、直接插入
15、TCP/IP参考模型的网络接口层对应OSI的是 传输层 网络层 物理层 数据链路层
16、Chrome V8 中对象的命名属性有三种的不同存储方式 慢属性 对象内属性 快属性
19、PV操作,P操作可能导致 进程阻塞 进程就绪 进程结束 新进程创建
20、vim编辑文件,等价于”:wq 指令的
编程题
1、题目描述:一个由正整数组成的集合,删掉尽可能少的数使该集合的众数出现次数不超过给定参数k。输出最少需要删除几个数。
输入描述 :第一行有两个正整数n,k,n代表集合大小。第二行有n个正整数,代表给出的集合。
输出描述:一个非负整数,即至少要从集合中删除几个数才能使得集合中众数的出现次数不超过k。
样例输入
5 1
1 3 2 2 1
样例输出
2
解题思路:统计相同数字出现的次数并放入map中,对于map按照value值从大到小排序,如果当前值大于k则在最终结果中加上当前值需要删除的次数。
function deleteMax(n, k, str) { let arr = str.split(" ").map((v) => parseInt(v)); let map = new Map(); for (let i = 0; i < n; i++) { const element = arr[i]; if (map.has(element)) { let temp = map.get(element) + 1; map.set(element, temp); } else { map.set(element, 1); } } let arr1 = Array.from(map.values()); arr1.sort((a, b) => { return b - a; }); let count = 0; while (arr1[0] > k) { let max = arr1[0]; let time = arr1.lastIndexOf(max) + 1; count += (max - k) * time; arr1 = arr1.slice(time); } console.log("count:", count); return count } deleteMax(5, 1, "1 3 2 2 1");
2、题目描述:小明正在进行积木的分销。他一共有N个积木,他要将它们分装列M个小小包装内,每个小包装内至少有一个。如果一个小包装内含x个积木,那么这个小包装将会被定价为x * x。小明想要控制一下价格,不希里价格太贵或者太便宜,他想要知道是否存在一种分装方案,使得分装后的M个小包装定价之和恰好为P。
如果有多种方案,输出字典序最小的哪一个。对于M=3,N=4的情况下,[1,1,2]的了典序小于1[2,1,1](对应t=D的情况)、[1,2,1 ](对应1=1的情况).
输入描述 第一行三个正整数N、M、P,
输出带述 若不存在任何方案,输出-1,否则输出M个数表示每个小包装内应分的的积木数量
样例输入4 3 6
样例出1 1 2
解题思路:递归方法,Fn(n, m, p, res) 向下递归 Fn(n - i, m - 1, p - i^2, res + i),最后一次选值的时候必然只剩一个选择,如果这时候三数满足条件则将每个数压入结果数组中,并返回true,否则返回false,如果结果为true,则将结果数组排序并返回,否则返回-1;
function count(n, m, p) { let x = 1; let res = []; if(countInsert(n, m, p, res)){ res.sort(); return res }; return -1; } function countInsert(n, m, p, res) { if (m === 1) { if (n * n === p) { res.push(n); return true; } return false; } for (let i = 1; i <= n - m + 1; i++) { let temp = countInsert(n - i, m - 1, p - i * i, res); if (temp) { res.push(i); return true; } } return false; }
春招过程中的笔面记录(持续更新,欢迎订阅~ 祝大家早日offer)