大厂软开秋招笔试(算法)真题2

一条路上依次排列着N个七色豆,七种颜色分别用字符abcdefg表示。
一条机器小人沿着这条路往前捡豆豆,机器小人会按下发给它的指令串进行动作:指令串由abcdefg*这八个字符组成。其中abcdefg是豆豆的颜色,表示机器小人接下来可以捡一粒该颜色的豆豆。如果指令串接下来出现"*这个字符,表示机器小人可以重复前一个动作任意多次(包括0次)。
如果指令串执行结束,或者遇到当前指令不能匹配的豆豆,机器小人停止前进。
求机器小人最多可以捡到多少个豆豆。
输入描述:
第一行输入一个字符串,为N个豆豆的颜色,长度N不超过1000
第二行输入一个字符串,为机器小人的指令串S,S长度不超过1000
输出描述:
第一行输入一个字符串,为N个豆豆的颜色,长度N不超过1000
第二行输入一个字符串,为机器小人的指令串S,S长度不超过1000
补充说明:
整数值,表示机器小人最多可以捡到多少个豆豆
示例:
输入:
abbbbcdefg
ab*c*d
输出:
7

在一个神秘的森林中,住着一群聪明的小动物。每只小动物都有一个独特的魔法数字。一天,森林中的智者决定进行一次特殊的仪式,需要小动物们按顺序站好,从中挑出不少于一只小动物站成一队,现在需要从这个队伍中挑选出来一些小动物,实现挑出的小动物的魔法数字之和是最大的,要求挑选出来的小动物不能改变其在原始队伍中的相对位置,并且挑选出来的小动物在原队伍中的位置间隔不能小于k。
输入描述:
第一行包含两个整数n和k,表示小动物的数量和最小位置间隔。数组长度n的范围是[1,100000],最小距离k的范围是[1,n]
第二行包含j个整数,表示每只小动物的魔法数字。每个魔法数字的取值范围是[-10000.10000]
输出描述:
输出一个整数,表示满足条件的最大和。
示例 1:
输入:
5 2
3 2 5 10 7
输出:
15
说明:
共有5个小动物,要求挑选出的小动物在原始队伍中的位置间隔不能小于2,当前五个小动物站成一队后,魔法数组分别为3 2 5 10 7,按照要求得到的最大的值为15,其挑选出的队伍为3 5 7
请使用Golang实现

肖林在大学毕业后,计划安排一次愉快的旅游,所以提前对想去的旅游景点进行了量化评估,方便挑选出最优的旅游路线。评估维度分为三个属性,分别为m、n和(x,y),其中m代表疲劳值,n代表兴奋值,(x,y):代表景点位置。家所在位置为(0,0)。并且从旅游景点(x1,y1)到旅游景点(x2,y2),会产生一定的疲劳值,其疲劳值为|x1-x2|+|y1-y2|。
选择k个旅游景点,计算最终的疲劳值cm和兴奋值cn,而cn/cm则代表本次旅游的舒适值,舒适值最高的旅游路线,即表示为最优的旅游路线。cm代表所有旅游景点的疲劳值之和,再加上路上所产生的疲劳值。cn代表所有旅游景点的兴奋值之和。
现在有t个旅游景点,肖林准备选择k个景区进行游玩,旅游路线需从家里出发,经过k个景区并最终回到家里。请为肖林规划好最优的旅游路线。
输入描述:
第一行输入t k,空格分割,分别代表旅游景点总数和计划游玩的旅游景点个数。0<k<=t。
第二行到第t+1行输入m n (x y),空格分割,代表每个旅游景点的属性。
输出描述:
舒适值(保留6位小数点),表示最优旅游路线的舒适值。
示例:
输入:
3 2
6 20 (10 15)
-5 10 (30 27)
-15 10 (20 25)
输出:
0.370370
说明:
最优旅游路线为:(0,0)->(10,15)->(20,25)->(0,0)或者(0.0)->(20,25)->{10,15)->(0,0)
计算出cm=81,cn=30,最终计算的值为0.370370

微隔离产品有个流量可视的模块,流量可视会图形化展示服务器之间的所有访问关系,其中访问关系需要匹配***策略以让用户观测该流量是否被放行or拒绝,拒绝的原因是匹配到了某一条***策略。请你设计一个算法来快速完成访问关系的策略匹配。
流量数据和***策略均为五元组(src_ip,src_port,dst_ip,dst_port,protocol)
流量五元组示例和格式说明
src_ip:字符串,仅支持ipv4格式。如:1.1.1.1
src_port:整数,1-65535。如:222
dst_ip:字符串,仅支持ipv4格式。如:1.1.1.1
dst_port:整数,1-65535。如:111
protocol:整数:仅支持tcp:17,icmp:1,udp:6
***规则示例和格式说明
src_ip:字符串,支持ip段/单个ip/任意IP。如:1.1.1.1,1.1.1.1-1.1.10.1,0.0.0.0
src_port:字符串,支持端口范围/单个端口/任意端口。如:80,80-90,0
dst_ip:字符串,支持ip段/单个ip/任意IP。如:1.1.1.1,1.1.1.1-1.1.10.1,0.0.0.0
dst_port:字符串,支持端口范围/单个端口/任意端口。如80,80-90,0
protocol:整数,支持17/6/1/0(tcp:17,udp:6,icmp:1,ALL:0)

有n颗珍珠,编号0~n-1,它们中间有细线连接,每颗珍珠至多与其他3颗珍珠连接,且不形成环路,所有珍珠都连接在一起。对于每颗珍珠,他们的重要度定义如下:假设去掉编号为k的珍珠,那么剩下的珍珠按照连接关系会分裂成1-3组,每组的珍珠数量的乘积即为k号珍珠的重要度。求:具有最高重要度的珍珠有几颗?
输入描述:
第一行输入n,下面n行输入编号0~n-1的珍珠的邻接珍珠,第一个数代表邻居的数量k,后面跟k个数代表邻居编号,为了避免重复数据,只输入编号比自己编号大的邻居。
示例:
5
1 1
1 2
2 3 4
0
0
上面的数据代表:
0号连接着1;
1号连接着2;
2号连接着1,3,4,因为1比2小,之前的数据里包含了这个连接关系,所以只输入3,4;
3号连接着2,因为2比3小,3没有与其他编号比它大的数连接,所以输入0;
4号连接着2,因为2比4小,4没有与其他编号比它大的数连接,所以输入0;
输出描述:
一个整数,代表具有最高重要度的珍珠的数量
对于刚刚输入的例子,输出为
3
解释:
节点0的分数是4
节点1的分数是1*3=3
节点2的分数是1*1*2=2
节点3的分数是4
节点4的分数是4
最高得分为4,有3个节点得分为4,输出3
示例1
输入:
5
1 1
1 2
2 3 4
0
0
输出
3
请使用Golang实现该算法

小红和小紫正在玩一个游戏,每一关都有一个分数。如果某人某一关分数比上一关高,但另一个人这一关分数比上一关低,那么他就可以嘲笑对方。如果两个人这一关游戏的分数都比上一关多,则增量更多的可以嘲笑对方;如果两个人这一关游戏的分数都比上一关少,则减量更少的可以嘲笑对方。只有当他们的增量相同或者减量相同时,才不会互相嘲笑。
例如,假设小红第一关的分数为5,第二关的分数为10;小紫第一关的分数为2,第二关的分数为8,显然小红增加的比小紫多,那么小红就可以嘲笑小紫。
现在给定了小红和小紫每一关的分数,你可以选择一段连续的关卡,使得这一段关卡中两个人都不会互相嘲笑,问最多可以选择多少个关卡。特别的,一段连续关卡中的第一关两人不会互相嘲笑。
输入描述:
第一行输入一个正整数几,代表关卡数。
第二行输入n个整数ai;,代表小红每一关的分数。
第三行输入n个整数bi;,代表小紫每一关的分数。
2 ≤n< 10^5
-10^9≤ ai,bi≤ 10^9
输出描述:
输出可以选择最多的关卡数。
示例 1:
输入:
5
1 2 3 1 3
-1 0 3 -1 1
输出:
2
说明:
可以选择前两个数,[1,2]和[-1,0]相似,长度为2。选择后两个数也是可以的。

对于一个仅由左括号'('和右括号')'组成的字符串,小红想知道它的最长合法前缀的长度是多少。
对于某一个前缀,我们定义它是合法的,当且仅当该前缀满足以下条件:
存在一种拆分方案,可以将该前缀拆分为若干对匹配的括号'()'如'(),'()()','(())'都是合法的,而')()(','))'是非法的。
特殊的,空串我们认为也是合法的。
输入描述:
第一行输入一个整数n,表示字符串的长度。
接下来一行输入一个长度为n的,仅由'('和')'组成的字符串
1 ≤n≤ 10^5
输出描述:
输出一个整数,表示最长的合法前缀长度。
示例1
输入
5
(()))
输出
4
说明
可以证明前缀(())是最长且合法的前缀
全部评论

相关推荐

06-11 20:56
已编辑
门头沟学院 golang
1. 自我介绍,1min以内(介绍了上家业务,和个人项目)2. 你刚才说了下行链路具体优化(说了上游的职责,我们的职责,技改目标,中途他直接不耐烦,要不我直接问题吧,解释了下发消息的步骤,定顺序,存db,下推,第三个步骤有比较大的rt跳变,解释为什么这样做)3. 你们现在下推,读放大还是写放大(群聊维度的读扩散)4. 主要是做这个技改对吧(我说我还做了一个大群下行的优化)5. 我想问一下你做下行的话,你们未读数是怎么判断的(比较尴尬的是,纯客户端做未读数,客户端无数据直接冷启实际上,未读数是0,所有消息都已读)6. 但是有一个问题,我有很多很多的消息,它在不同的群聊里面,但是一次性可能拉不完,那这个时候它的未读数,只是依靠客户端算的话,它可能不准对吧(我们会保存一个长度100的chatlist,假如无数据冷启动,它就会拉着100个chatlist,一条消息push过来了之后,知道某个消息盒子有一个未读)7. 多设备怎么同步数据(我确认了一下场景,AB两个设备,向某个用户发一个消息,也希望另外一个用户的客户端出现这个消息盒子,面试官说嗯,我说消息发送出来了,需要向自己的所有设备也push一个seq_id)8. 你的那个redis kv热key问题怎么解决的(吟唱异步侦测热key,一致性hash定位worker,然后etcd watch机制下发hot key)9. 那热key被更新/删除是怎么做的,操作顺序(我说我们用rocksdb做的redis能迁出一条binlog,worker可以消费binlog,删除etcd的热key list,此外worker内存里面其实也有保存热key状态,etcd其实只是用来做下发的)10. 你后面做的私信群聊实现,是自己做的是吧(自学然后搓了一个类似的)11. 我项目大概了解了,来问点基础问题吧,ascii码,和unicode的区别(前向编码)12. 也用一些http,websocket,你说下什么场景用http,什么场景用websocket(瞎说了一堆,http不能服务端推,websocket可以双工,说下为什么浏览器不用tcp,而是用websocket)13. 所有的主动推的场景都需要用websocket吗,举例子(http 配置中心 long polling,websocket文档以及im)14. https安全性高的原因,怎么保证的(防篡改,防监听,防冒充)15. ip报文有哪些内容(只答出来了,有一个字段表示上层协议,scr/dest ip,以及校验和,难绷,没答全)16. 一个数据库问题,分库分表的原则是什么(这个不知道)17. 那你写过sql吗,出了一道很简单的sql join题(不懂为啥问我这个,就一个join然后where and where and where)18. 你使用过golang对吧,你说一下nil和字面空值的区别,从存储的角度(不同类型可以赋nil,或0值,扯了很久,假如说是指针类型,默认值是nil,此时其实占8个字节,因为它是一个指针,64位机上。然后float32占4个字节,float64占8个字节)19. 然后我再问问,携程,写并发的请求,你会用什么库,waitgroup,ant20. 协程池的好处(复用)21. 设计一个协程池,设计一个协程池最重要的是什么(乱说一通,不懂对不对,分桶,sync.Pool)做一道题,mid:******************************************************************
查看21道真题和解析
点赞 评论 收藏
分享
06-04 22:46
已编辑
湖北大学 Java
5月11日 投递简历5月19日 笔试1、求阶乘中0的个数,如7!=5040,有两个0,输出22、染色的数字,输入一个数组和数组中哪几个下标的数字被染色了,要求输出未被染色的数字之和3、01背包,给出菜品数量和小美的预算,以及每道菜的成本和售价,每道菜只能上一次,输出在小美的预算下最多能赚多少,如有3道菜,成本和售价分别为[1,3]、[3,6]、[1,3],小美预算为6元,则上第1和第3道菜可盈利最多,为4元,只上第二道菜虽然也在小美的预算内,但是因为只盈利3元所以不是答案5月23日  一面 55min面试官没开摄像头自我介绍介绍实习经历spring事务传播行为for update锁各个分布式事务解决方案原理一条SQL语句的执行过程索引的优缺点索引覆盖与索引下推MVCC活跃事务ID集合在RR和RC隔离级别下的不同redo log、undo log、bin log文件格式的区别?如何保证MySQL和Redis的数据一致性缓存击穿与缓存雪崩redis内存淘汰策略与删除策略redis持久化方式一条域名在浏览器中输入后经历了哪些过程TLS四次握手当客户端宕机了,服务端如何判断是否要断开这个连接?TCP协议如何让服务端判断是否要与这个客户端断开连接?是否有网络安全相关的经验?手撕:最长不重复字符子串,双指针、滑动窗口反问环节问了做什么业务的,说是网络安全相关,Aone平台,用的golang,怪不得没问Java和Spring相关的问题5月27日 二面 1h面试官没开摄像头自我介绍实习经历里的Redisson上分布式锁仍超卖的原因和解决方案SQL怎么优化的Java反射的应用场景Spring中哪些地方用到了反射反射的优缺点socket的连接在Java中的实现JDK动态代理与CGLib动态代理什么是MySQL中的执行计划explain的结果中哪些比较受关注,都是什么意思如果一个表上索引了还是发生慢查询,可能是什么原因导致的分库分表有哪些方案MySQL的缓存机制Redis的内存淘汰策略Redis的删除策略Redis的管道管道机制在其他系统中的应用?RabbitMQ与RocketMQ的区别TCP三次握手为什么要有三次,没有第三次会怎么样HTTP 2.0 与 HTTP 1.0的区别HTTP 2.0的头部压缩算法有了解吗HTTP是如何实现长连接的DNS协议解析域名的过程了解哪些网络攻击方式?SYN泛洪如何预防?SQL注入是什么?如何预防?手撕:翻转单词,如输入 "You    are   my  best friend !",需要输出 "uoY era ym tseb dneirf !",单词本身翻转但顺序不变,且去除多余的空格,各单词之间只保留一个5月30日 hr面 15min聊天面6月4日  oc二面面完我都以为寄了,面完就完全不抱希望了,都没去看官网什么状态。29号那天下午都在刷行测了,结果突然发个邮件给我约hr面,真是柳暗花明又一村,没想到都6月了还能拿到暑期实习的offer,也祝还在坚持的大家能有个好结果
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务