9.17 深信服一面
视频面试 20min,面试官人很好
- 实习收获
- 棘手的事情以及怎么解决
- 为什么选择测开
- 实习任务给的期限是怎么看的
- 笔试题目:
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""
。示例 1:
输入: ["flower","flow","flight"] 输出: "fl"示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。说明:
所有输入只包含小写字母
a-z
。
讲了一下做题思路而已。
参考代码:
class Solution { public String longestCommonPrefix(String[] strs) { if(strs == null || strs.length == 0){ return ""; } if(strs.length == 1){ return strs[0]; } int len = strs[0].length(); for(String str:strs){ len = Math.min(len,str.length()); //得到字符数组里面最短字符的长度 } if(len == 0){ //其中的一个字符为空的情况 return " "; } StringBuffer res = new StringBuffer(len); //每个字符只需要遍历到最小长度即可,因为大于最小长度字符的那一部分不可能有公共 for(int j = 0; j < len;j++){ for(int t= 0;t < strs.length;t++){ if(strs[t].charAt(j) != strs[0].charAt(j)){ //每个与第一个字符开始比较,也就是与下标为0的字符的元素比较。 return res.toString(); } } res.append(strs[0].charAt(j)); //相同就加进结果集 } return res.toString(); } }
9.18 深信服二面
主管面吧 ,好严格, 问了1.5h
挖项目 挖到你答不出来为止,都怀疑人生想放弃面试了。
最后再来了个题目:
装入背包中的行李的最大价值问题
求装入背包中的所有物品的最大价值
总体思路:物品从1开始编号,从1开始一件一件物品考虑是否加入背包。
使用dp[x][y] 表示前 x 件物品,在不超过重量 y 的时候的最大价值。则有前x件物品重量不超过y的最大价值要么等于前x-1件物品重量不超过y的最大价值dp[x-1][y],要么等于前x-1件物品重量不超过y-weights[x]的最大价值加第x件物品的价值dp[x-1][y - weights[x]] + values[x]。
————————————————
用dp做法
总结
感觉二面面试官好严格,也会抓着你某个点一直问深,好吧,大概率不过了。
全部评论
(2) 回帖