问的比较基础, 仅作分享. 后续的主管面忘了记录.
1. 自我介绍
2. 面试问题
- 数学建模
详细介绍建模
建模过程中编程怎么解决的 - 数据结构与算法
常用数据结构介绍一下
图的遍历有哪些
图怎么用邻接矩阵表示
算法里面的NP问题介绍一下
贪心算法和动态规划的区别 - 数学问题
数学的千禧年问题了解吗
费马大定理是什么
3. 手撕代码
- 给定数组, 输出最长递减子序列 (如 6 3 5 4 7 8 可输出 3 4 7 8)
- 给定总时间和一些试卷的价值和所需时间, 做哪一些试卷能够价值最大(背包问题)
- 开放题: 无线业务中图的遍历, 开放性地询问思路
附上面试时写的第一题的代码 (力扣有类似题, 也有简单解法输出最长长度. 不过力扣没有要求输出该最长序列. 值得一做)
import java.util.Deque; import java.util.LinkedList; import java.util.List; public class Test { public static List<Integer> func(int[] arr) { if (arr == null || arr.length == 0) { return null; } Deque<Integer> s = new LinkedList<>(); int maxLength = 0; for (int num : arr) { while (!s.isEmpty() && num >= s.peek()) { s.pop(); } s.push(num); maxLength = Math.max(maxLength, s.size()); } LinkedList<Integer> l = new LinkedList<>(); for (int num : arr) { while (l.size() != 0 && num >= l.getLast()) { l.removeLast(); } l.add(num); if (l.size() == maxLength) { return l; } } return null; } public static void main(String[] args) { int[] arr = new int[]{6 3 5 4 7 8}; // int[] arr = new int[]{9, 4, 3, 2, 5, 4, 3, 2}; System.out.println(func(arr)); } }
全部评论
(2) 回帖