百度23届秋招前端岗 2024/12/13
1.小红的01串
小红拿到了一个01串,她每次可以选择一个长度为2的连续子串取反(0变1,1变0),她想知道,是否能在有限的操作次数内使得所有字符相同?共有𝑞组询问。
链接:小红的01串__牛客网
输入描述:
第一行输入一个正整数q,代表询问次数。 每次询问输入一个字符串,仅由'0'和'1'组成。 所有字符串长度之和不超过200000。
输出描述:
对于每次询问,如果该字符串可以通过有限的操作使得所有字符相同,则输出"Yes",否则输出"No"。
示例
输入
3 101 1111 1011
输出
Yes Yes No
#include <iostream>
using namespace std;/*
思路
透过现象看本质
翻转连续的两个字符,其实本质上就4种情况
0 0 -> 1 1
0 1 -> 1 0
1 0 -> 0 1
1 1 -> 0 0
可以看到翻转不会改变0或者1的奇偶性质题目转化一个意思就是 我们要在有限次内将其中一个数字数量变为0。
而0是偶,所以一定要满足0或者1的数量为偶数
*/
int q;
int main() {cin>>q;string s;while(q--){cin>>s;int one=0,zero=0;for(int i=0;i<s.size();i++){one+=s[i]=='1';zero+=s[i]=='0';}if(one%2==0||zero%2==0) cout<<"Yes";else cout<<"No";cout<<endl;}return 0;
}
2.小红的踏前斩
链接:小红的踏前斩__牛客网
有n个怪物排成一排,第iii个怪物的血量为ai。小红有两个技能可以打怪:
1. 强力攻击,消耗1mp,对一只怪物造成1点伤害。
2. 踏前斩,消耗5mp,对当前怪物造成1的伤害,同时剑气将波及后两个怪物,对下一个怪物造成2点伤害,对下下个怪物造成3点伤害。
如果一个怪物受伤后血量小于等于0,则怪物死亡。死亡后怪物的尸体依然占据一个位置,会被踏前斩的剑气打到。
小红想知道,击杀全部怪物至少需要花费多少mp?
链接:小红的踏前斩__牛客网
来源:牛客网
输入描述:
第一行输入一个正整数n,代表怪物的数量。 第二行输入n个正整数ai,代表每个怪物的血量。 1≤n≤10^5 1≤ai≤10^9
输出描述:
一个整数,代表花费的mp最小值。
示例
输入
5 2 3 4 2 3
输出
12
说明
对第一个怪和第二个怪分别进行一次强力攻击,此时每只怪物血量为[1,2,4,2,3] 对第一个怪进行一次踏前斩,此时每只怪物血量为[0,0,1,2,3] 再对第三个怪进行一次踏前斩,消灭全部怪物。 总mp消耗为12。
#include <bits/stdc++.h>
using namespace std;/*
思路
因为踏前斩的收益一定高于强力攻击,所以对每个位置都尝试是否可以使用踏前斩,可以使用贪心算法
*/
const int N=1e5+10;
int n,a[N];
long long ans;int main() {cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}//从后往前贪心for(int i=n-2;i>0;i--){int k=min(a[i],min(a[i+1]/2,a[i+2]/3)); //使得踏前斩的收益最大化ans+=k*5;a[i]-=k;a[i+1]-=2*k;a[i+2]-=3*k;}//最后使用强力攻击for(int i=1;i<=n;i++) ans+=a[i];cout<<ans;return 0;
}
3.小红的baidu型子串
小红拿到了一个字符串,她想知道有多少个"baidu"型子串?
所谓"baidu"型字符串,指第1个、第4个字母是辅音,第2、3、5个字符是元音,且每个字母都不相同的字符串。
例如,"taigu"、"huida"、"paobu"、"baoli"等都是"baidu"型字符串。
我们定义,元音字母仅有'a'、'e'、'i'、'o'、'u'这五种,其余字母均为辅音字母。
#include <bits/stdc++.h>using namespace std;const int N=2e5+10;/*
注意一个点,baidu型子串长度都5,字母要求不重复。
*/string s;
int ans;
// set<string> st; //存储所有长度为5的子串
// 注意好像可以重复计算相同的子串 所以不使用set了bool check(char a){if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u') return true;return false;
}int main() {cin>>s;for(int i=0;i<s.size()-4;i++){string str=s.substr(i,5);//检查每个子串是否符合定义set<char> cnt; //默认去重复for(auto x:str){cnt.insert(x);}if(cnt.size()==5&&check(str[1])&&check(str[2])&&check(str[4])&&!check(str[0])&&!check(str[3])) ans++;} cout<<ans;return 0;
}
4.给定一颗二叉树的前序遍历为ABCDEFG,中序遍历为CEDFBAH,该二叉树根节点的右孩子的左孩子结点是(不存在)
5.在一个长度为n的顺序表中查找元素k,最好情况需要比较(1)次,最坏情况需要比较(n)次。
6.一组记录的关键码为(21,88,19,45,13,25,66,33,18),则利用快速排序的方法,以第一个记录为基准,从小到大排序得到的一次划分结果为(18,13,19,21,45,25,66,33,88)
7.下面关于 Cookie 与 Session 的说法中,正确的是(C)
A.Session 数据保存在客户端浏览器
B.会话 Cookie 关闭浏览器之后会存在一段时间
C.Session 的安全性比 Cookie 高
D.Cookie 被禁止时没有办法将 session id 传递回服务器
解析
A选项,Cookie数据保存在浏览器客户端,而Session数据保存在服务器端。
B选项,Cookie分为会话Cookie与持久Cookie,会话Cookie会话结束就会销毁,而持久Cookie会在关闭浏览器后存在一段时间。
C选项,因为Session保存在服务器端,不容易被截获,所以比Cookie 更安全。
D选项,由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够session id传递回服务器,经常采用的一种技术叫做 URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在 URL后面。网络在整个交互过程中终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
8.如果给一个 span 标签添加下列 CSS 样式,则以下说法正确的是(D)
1 2 3 |
|
A.span 标签默认宽度为100%且占据一行
B.无法给该 span 标签设置宽高属性
C.给该 span 标签设置 padding-top 属性会失效
D.span 标签默认宽高为0
解析
A 选项,块级元素默认100%宽度占据一行,但是添加了浮动的 span 标签应是行内块元素,宽度为0,选项错误。
B 选项,由于 span 标签是行内块元素,并非行内元素,因此可以正常的设置宽高属性,选项错误。
C 选项,span 标签是行内块元素,设置 padding-top、padding-bottom 都会生效,选项错误。
D 选项,行内块标签在没有显示设置宽高情况下,宽高默认都为0,因此 span 标签默认宽高为0,选项正确。
9.请问以下有关 a 标签属性的说法错误的是(C)
A.a 标签中可以使用 href="#" 返回到页面顶部
B.a 标签中的 download 属性仅适用于同源 URL
C.如果 HTTP 头中的 Content-Disposition 属性赋予了一个不同于 a 标签中 download 属性的文件名,则后者优先级更高
D.在不设置 a 标签的 target 属性时,点击 a 标签默认从当前页面加载
解析
A 选项,a 标签中可以使用 href="#top" 或者 href="#" 链接返回到页面顶部,选项正确。
B 选项,a 标签中的 download 属性仅适用于同源 URL,但是可以使用 blob: URL 和 data: URL,以方便用户下载使用 JavaScript 生成的内容,选项正确。
C 选项,如果 HTTP 头中的 Content-Disposition 属性赋予了一个不同于此属性的文件名,HTTP 头属性优先于 a 标签中 download 属性,即前者优先级更高,选项错误。
D 选项,a 标签的 target 属性值默认为 _self,意为当前页面加载,即响应到同一 HTML 4 frame(或 HTML5 浏览上下文),选项正确。
10.请问以下 JS 代码最终输出的结果是(2、0)
1 2 3 4 5 |
|
解析
在 JavaScript 中,正则表达式使用 /.../
的语法来创建。这里的 y
标志是 "粘附"(sticky)模式,它会使得正则表达式从 lastIndex
属性指定的位置开始匹配,而不是从字符串的开头。
const res = /cc/y;
创建了一个正则表达式,内容为 cc
,使用了 y
标志。
res.test('ccwwcc');
会从字符串 ccwwcc
中查找 cc
。
正则表达式的 lastIndex 默认为0,当匹配到结果时 lastIndex 就会更新到前次匹配之后的位置。因此当正则表达式 res 第一次匹配字符串时,可以成功匹配,lastIndex 指向更新到匹配内容之后的那个字符,也就是2
而当匹配失败时,lastIndex 就会重置为0,因此当正则表达式 res 第二次匹配字符串时,匹配失败,lastIndex 就被重置为0
11.下列关于面向连接服务与无连接服务的描述中,说法错误的是(B)
A.面向连接服务可以分为连接建立、数据传输和连接释放三个阶段
B.IP 是一种面向连接服务的协议
C.无连接服务常被描述为“尽最大努力交付”,它并不保证通信的可靠性
D.UDP 是一种无连接服务的协议
12.在牛牛系统中使用请求分段存储管理系统,已知某T时刻系统各相关设备的利用率分别为: CPU的利用率为8%,I/O设备的利用率为6%,磁盘交换区的利用率为88%,则(任务作业不多,但是交换操作非常频繁)
13.在 非严格模式下 javaScript Arguments 对象说法正确的是(BC)
A.arguments 是一个数组
B.arguments 具有length 属性
C.arguments 在箭头函数中访问不到
D.arguments 可以用forEach 进行迭代
解析
arguments对象是所有(非箭头)函数中都可用的局部变量。
arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。
arguments 是一个 “类数组” 意味着 arguments 有 长度 属性 并且属性的索引是从零开始的, 但是它没有 Array的 内置方法
14.以下关于 == 的隐式类型转换正确成立的是哪几项(BCD)
A."" == null
B."123" == 123
C.0 == false
D.1 == true
解析
在隐式类型比较中,如果其中一个操作值是 null 或者 undefined,那么另一个操作符必须为 null 或者 undefined,才会返回 true,否则都返回 false;
两个操作值如果为 string 和 number 类型,那么就会将字符串转换为 number进行比较;
如果一个操作值是 boolean,那么转换成 number;
15.浏览器同源策略是指(C)
A.同协议
B.同协议、同域名
C.同协议、同域名、同端口
D.同协议、同域名、同端口、同路径
16.下列关于串的堆存储结构的叙述错误的是(C)
A.堆存储结构在内存中开辟的是一块地址连续的存储空间
B.在堆存储结构下,串仍然是以数组存储的字符序列表示
C.串插入操作StrInsert(S,pos,T),即将串T插入到串S的第pos字符之前,直接使用预先分配的内存空间
D.堆串的存储空间是在程序执行过程中动态分配的
17.下列选项中,不属于 HTML5 新增的块级标签的是(CD)
A.aside
B.figure
C.progress
D.time
解析
aside和figure是HTML5新增的块级元素,progress和time标签是HTML5新增的行内元素
18.下列关于操作系统的叙述错误的是(B)
A.操作系统负责管理协调硬件、软件等计算机资源的工作
B.高级程序设计语言的编译器也是操作系统的主要问题
C.操作系统的主要功能是管理所有的软、硬件资源
D.操作系统是最基本的系统软件
解析
操作系统(Operation System, OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织和调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件
19.攻击者一般会在下列哪一种sql注入方式中使用sleep()函数(B)
A.联合注入
B.盲注
C.旁注
D.以上皆是
20.请问以下关于Promise说法错误的是(C)
A.catch的行为与调用then方法的一些特例相同
B.Promise只能被决议一次
C.在创建了一个Promise且注册了完成处理函数的情况下,如果这个任务迟迟没有结束可以从外部停止它的进程
D.Promise.finally方法返回的依然是一个Promise对象
解析
A选项,例如then(undefined,onRejected)就可以起到类似catch的作用。
B选项,Promise最本质的一个特征便是只能被决议一次即完成或者拒绝,之后不能被修改。
C选项,Promise一旦创建就不能中途取消,所以无法从外部来停止它的进程,选项C错误。
D选项,Promise.finally方法返回一个设置了finally回调函数的Promise对象。
21.下列div元素中,能被属性选择器[class~="val"]选中的有(③④)
1 2 3 4 |
|
解析
[attr~= "val"]是属性值单词完全匹配选择器,专门用于匹配属性中的单词,它不能匹配空字符串或者部分字符串;但是允许单词前后出现空格或者出现多个以空格隔开的单词
22.执行以下代码,已知pic.jpg(宽:150px,高:200px)位于源代码的同级目录,为了在浏览器页面中显示图片的原始比例,同时让图片完全覆盖div盒子区域,①式应为(AD)
1 2 3 4 5 6 7 8 9 10 |
|
A.cover
B.contain
C.100% 100%
D.100% auto
解析
当background-size取值为cover或者contain时,均是等比例缩放的,不同的是,cover表示拉伸图片直至完全覆盖住盒子,而contain是拉伸图片直至完全覆盖盒子的宽或高的一端,除非背景图片的宽高比例与盒子的宽高比例恰好相等,否则不会完全覆盖图片,A选项正确,B选项错误;C选项,取值为100% 100%表示背景图片的宽、高取值为盒子的宽高,虽然可以完全覆盖盒子,但是由于宽高比例不同导致背景图片的原始比例被破坏,C选项错误;D选项,100% auto表示背景图片的宽度设置为盒子的宽度,高度按照图片的原始比例进行拉伸。宽度扩大了1.33倍,图片的高度对应扩大1.33倍后会大于div盒子的高度,因此可以完全覆盖div盒子,D选项正确。
23.请问关于下列JS代码说法错误的是(AC)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
A.上述JS代码无法正常运行
B.上述JS代码执行后的结果是打印两次117
C.func1函数的this是指向undefined
D.func2函数的this一开始是指向undefined,被修改后指向全局对象
解析
func1函数在非严格模式下this默认绑定到全局对象,在严格模式下调用并不会影响默认绑定。func2函数在严格模式下定义无法将全局对象用于默认绑定,this就会绑定到undefined,但是定时器是处于全局代码中this不会受严格模式影响,依然是指向全局对象,所以func2的this被修改后就是指向全局对象。因此代码运行无异常,正常打印两次117。