饿了么算法笔试

继续裸笔,是比蚂蚁略简单点
第一题送分不记得了
第二题,给k个数(不重复且为1到k),有一次交换两个数顺序的操作,要求交换后数组里只有2个位置的数不满足ai=i。问有多少种操作方案
第三题火锅下菜,n个菜,m个要求(菜品必须在菜品v前面),每个菜品最多一个要求,每个要求最多一个菜品,问最多满足几个要求,并输出最小字典序的下菜顺序。
全部评论
第三题我感觉有点奇怪,明明一个条件不应该就会约束两个菜吗?整了一小时通过0
1 回复 分享
发布于 03-14 21:14 湖北
第三题显然是并查集,求出每个集合的大小(元素个数),然后就是一个组合数学的处理,因为每个集合内的元素顺序是固定的,那么用总组合数(n!),除以每个集合大小的阶乘就行
点赞 回复 分享
发布于 03-20 10:22 江西
第二题,a_i的大小有限制条件么,(1 <= a_i <= n,且唯一)忘了
点赞 回复 分享
发布于 03-14 22:02 广东
比起工程 这看起来好像是人做的
点赞 回复 分享
发布于 03-14 21:59 江苏
已老实
点赞 回复 分享
发布于 03-14 21:59 江苏
请问第二题你是怎么做的呀?我只想到0个错位点有(n选2)种,2个错位点0种,3个有3种,4个有点没搞清楚。再多应该不可能了吧
点赞 回复 分享
发布于 03-14 21:06 美国
佬 你是三道都做出来了么
点赞 回复 分享
发布于 03-14 20:52 湖北

相关推荐

总结:面了一个小时,一道手撕,几个八股,几道业务,还有场景行测题。手撕环节1.实现rm&nbsp;-rf&nbsp;path命令。已知3个方法&nbsp;1.file.isFile()判断是否是文件&nbsp;2.file.delete()删除文件或目录&nbsp;3.listFiles()返回这个目录下的所有文件或目录import&nbsp;java.io.File;import&nbsp;java.util.List;public&nbsp;class&nbsp;FileDeleter&nbsp;{//&nbsp;方法1:&nbsp;判断是否是文件public&nbsp;boolean&nbsp;isFile(String&nbsp;path)&nbsp;{return&nbsp;new&nbsp;File(path).isFile();}//&nbsp;方法2:&nbsp;删除文件或目录public&nbsp;void&nbsp;delete(String&nbsp;path)&nbsp;{File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(path);if&nbsp;(file.isDirectory())&nbsp;{//&nbsp;如果是目录,递归删除其内容deleteDirectory(file);}&nbsp;else&nbsp;{//&nbsp;如果是文件,直接删除file.delete();}}//&nbsp;方法3:&nbsp;返回目录下的所有文件和目录public&nbsp;List&lt;String&gt;&nbsp;listFiles(String&nbsp;path)&nbsp;{File&nbsp;directory&nbsp;=&nbsp;new&nbsp;File(path);File[]&nbsp;files&nbsp;=&nbsp;directory.listFiles();return&nbsp;Arrays.stream(files).map(File::getAbsolutePath).collect(Collectors.toList());}//&nbsp;实现rm&nbsp;-rf功能public&nbsp;void&nbsp;rmrf(String&nbsp;path)&nbsp;{if&nbsp;(isFile(path))&nbsp;{//&nbsp;如果是文件,直接删除delete(path);}&nbsp;else&nbsp;{//&nbsp;如果是目录,递归删除deleteDirectory(new&nbsp;File(path));}}//&nbsp;递归删除目录及其内容private&nbsp;void&nbsp;deleteDirectory(File&nbsp;directory)&nbsp;{//&nbsp;获取目录下所有文件和子目录File[]&nbsp;files&nbsp;=&nbsp;directory.listFiles();if&nbsp;(files&nbsp;!=&nbsp;null)&nbsp;{for&nbsp;(File&nbsp;file&nbsp;:&nbsp;files)&nbsp;{if&nbsp;(file.isDirectory())&nbsp;{//&nbsp;递归删除子目录deleteDirectory(file);}&nbsp;else&nbsp;{//&nbsp;删除文件file.delete();}}}//&nbsp;删除空目录directory.delete();}}2.追问:针对这个功能,请设计测试用例1.判断命令行是否为空2.判断关键字是否正确3.判断path是否为空4.判断path是否合法(无效,超过长度)5.判断path是绝对路径还是相对路径6.判断是否具有删除权限7.判断删除的是文件还是路径8.判断删除的文件类型(二进制,普通)场景题1.找出一个10w个元素的数组中,最大的1000个数使用最小堆,只保留最大的1000个数(原来思路是对整个数组排序,排成最大堆,这样的方案空间占用很多)2.请你列出支付宝的转账功能的测试点(系统层级)八股部分1.SpringBoot的注解1.1.启动类注解●@SpringBootApplication&nbsp;组合注解,包含以下三个注解:●@SpringBootConfiguration:标记为配置类●@EnableAutoConfiguration:启用自动配置(扫描META-INF&nbsp;的spring.factories,如果有对应的组件,就加载对应的Bean文件)●@ComponentScan:组件扫描1.2.条件注解●@ConditionalOnClass&nbsp;当类路径下有指定类时生效●@ConditionalOnMissingBean&nbsp;当容器中没有指定Bean时生效●@ConditionalOnProperty&nbsp;当配置属性满足条件时生效2.Spring如何管理依赖?Spring&nbsp;Boot&nbsp;通过其独特的依赖管理机制,极大地简化了项目依赖配置,解决了传统Spring项目中常见的依赖冲突和版本管理问题。父项目继承(spring-boot-starter-parent)Spring&nbsp;Boot&nbsp;提供了starter-parent作为推荐的基础父POM:&lt;parent&gt;&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;&lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;&lt;version&gt;3.1.0&lt;/version&gt;&nbsp;&lt;!--&nbsp;使用最新版本&nbsp;--&gt;&lt;/parent&gt;优势&nbsp;:●自动管理依赖版本(无需指定版本号)●默认的Maven配置(资源过滤、插件配置等)●合理的默认配置(Java版本、编码等)3.SpringBoot依赖注入如何使用@Autowired,@Resource,@Injected4.三种注入的方式了解吗常用方式:a.&nbsp;构造器注入(Constructor&nbsp;Injection)&nbsp;-&nbsp;官方推荐:&nbsp;通过类的构造方法注入依赖项。i.优点:依赖项不可变(final),确保在使用对象之前所有依赖都已准备好,完全初始化后的对象是线程安全的(如果依赖项也是线程安全的),强制要求依赖项,便于测试(测试时可以直接传入mock对象)。b.&nbsp;Setter注入(Setter&nbsp;Injection):&nbsp;通过类的setter方法注入依赖项。i.优点:可选依赖项(可以没有Setter调用,依赖可能为null),允许在对象创建后重新配置依赖(但通常不建议)。c.&nbsp;字段注入(Field&nbsp;Injection)&nbsp;-&nbsp;尽量避免:&nbsp;直接在字段上使用@Autowired注解。i.&nbsp;虽然使用简单,但通常不推荐,原因:破坏了封装性(字段变成public或通过反射可访问),难测试(需要反射或启动完整Spring上下文才能设置依赖),可能使类的依赖关系不明确(没有构造器或setter明确声明依赖),不利于声明final字段。5.Spring如何管理事务?使用AOP,使用try&nbsp;catchtry:开始事务执行方法提交事务catch:回滚事务项目提问1.你的项目输入输出是什么?2.有应用场景嘛?3.有应用大模型吗?4.除了实验室课题,你还做过什么项目?5.这两个学校项目占用了你多少时间?课余时间一般在做什么?(觉得我没有额外学习编程呜呜行测部分1.你遇到问题会怎么解决?2.假如领导交给你一个不能实现,或者你觉得没必要实现的任务,你会怎么做?3.你人生中最大的困难是什么?4.你选择测试开发岗位的原因是什么?对未来的职业规划是什么?反问环节1.是否可以了解一下目前测试业务范围?测试业务范围主要是负责饿了么APP点外卖、淘宝闪购以及用户能看到的所有页面和用户使用场景的测试工作。2.对于实习生来说,可能会负责哪些工作内容?实习生负责的工作内容取决于所在部门,可能涉及客户端测试或底层算法层的测试,具体要求根据实习生的分配部门和能力所在进行安排。3.平时的工作节奏是怎样的?正常上班时间为早上九点半,下班时间为下午六点半,但实际工作时间可以根据项目进度自行调整,周末通常为双休日。工作中会有临时高强度的情况,但并非常态。4.工作地点是上海吗?上海和杭州都有,建议实习地点和工作地点一致。
查看18道真题和解析
点赞 评论 收藏
分享
07-03 13:15
门头沟学院 Java
手撕:合并n个链表你用了优先队列(Priority&nbsp;Queue),这种做法本质上属于哪类排序?该算法的时间复杂度和空间复杂度各是多少?除了优先队列+虚拟节点方案,你有没有想到其他更优解?对“基本有序”数组,哪种排序最优?为什么?请讲解快速排序的核心思想与流程。如何快速从无序数组中找出第K大的元素?(如第3大、第10000大等)最优解可否用堆?可否用快速选择(Quickselect)?用3–5分钟重点介绍一个你参与度高、技术含量突出的项目。你了解哪些开源RPC框架?请详细讲一下阿里Dubbo的注册/发现机制、核心功能及优缺点。令牌桶限流原理是什么?关键点在哪里?你还知道哪些限流策略(固定窗口、滑动窗口、漏桶等),它们各自优缺点是什么?你对Spring源码做过哪些研读?关注了哪些模块?在Spring&nbsp;MVC中,IOC容器的两个最核心职责是什么?能否详细讲解Spring容器的启动、类加载、Bean定义解析、依赖注入全过程?JVM类加载双亲委派流程是怎样的?如何打破它?请描述Java内存区域:堆、栈、方法区(永久代/元空间)、本地方法栈等。哪些区域可能抛出OutOfMemoryError?为什么Java&nbsp;8将永久代改为元空间?它们在内存上的区别与优劣?为什么要把String设计为不可变?StringBuilder与StringBuffer有何区别?反射的优点和缺点有哪些?你是明年6月毕业吗?毕业后有考研打算吗?还是直接找实习/全职?实习时长打算多久?毕设时间安排如何?反问:技术团队主要负责哪些业务场景?部门日常开发中会用到哪些主流中间件或框架?对于本科生而言,哪些基础知识和能力比较重要?如果想深入某个方向,应当如何规划学习?
查看29道真题和解析
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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