Infosys 专业程序员面试经历(横向)
第一轮:从解决问题的一轮开始。我有 30 分钟的时间来解决。
- 问题:一位邪恶的科学家开发了一种注射剂,可以使鱼产生无法满足的饥饿感。注射后,一条大小为 x 的鱼可以吃掉另一条大小为 y (y < x) 的鱼,并变成一条大小为 x + y 的鱼,并保持这种饥饿感。水族馆里有许多大小不一的鱼。科学家将注入的鱼引入这个水族馆,目标是最终只剩下一条鱼。为了实现这一点,科学家只允许进行两种类型的移动:添加任意大小的正常鱼或从水族箱中移除现有的正常鱼。给定水族馆中其他鱼的大小和注入鱼的大小,编写一个程序来确定科学家实现其目标所需的最少移动次数。例如,假设水族箱中有 5 条鱼,注入的鱼的大小为 10,其他鱼的大小为 9、20、25 和 100。为了确保水族箱中只剩下 1 条鱼,科学家需要移除大小为 100 的鱼并添加大小为 3 的鱼。因此输出为 2。步骤顺序如下所示。鱼缸中每一步鱼的大小都显示在花括号中。突出显示的数字是注入鱼的大小。
解决方案:
Javascript
function fish(x, A) { A.sort((a,b) => a-b); let sum = x; let required_removals=A.length; let moves = 0; let best_moves=required_removals; let i =0; while(i
A[i]) { sum +=A[i]; required_removals -=1; i=i+1; } else { sum = sum +(sum -1); moves=moves+1; } best_moves = Math.min(best_moves, moves+required_removals); } return best_moves; } var arr= [ [10, [9,20,25,100]], [3, [25,20,100,400,500]], [50, [25,20,9,100]] ] for(let [x,A] of arr) { console.log(`${x}#${A}`); console.log(""); console.log(fish(x,A)); }
之后,我来自 MERN 堆栈技术。所以,有人问我几个 React.js 和 Node.js 问题
- Redux Flow、Redux Saga、Thunk、Refs、React.js 中的延迟加载、Formik
- Node.js、ejs、Coa 框架、Express Questions 中的包装类
- Mongo DB 数据聚合
第 2 轮:主要来自我的项目和 React.js 的问题
第 3 轮: HR 轮(工资和其他个人详细信息讨论)