【社招】百度一面
前文:
①感觉她是不是在看着题库出题啊,每次我说完了等她的反应都很慢;
②她是不是对我不感兴趣啊,业务和项目都没有深挖,我主要负责的也没有深挖
1.自我介绍
2.项目介绍(但不是我主要负责的,而是跟mt的)
3.Java熟悉一些对吧?Java创建线程有哪些方式?
4.Java的线程和进程的区别?
5.HTTPS和HTTP的区别
(心想:这是在校招?怎么全是计算机基础)
6.equals和==的区别,什么时候用equals,可以举个例子吗
==是地址,equals是值,往往需要重写hashCode方法
7.场景题:百度app的搜索功能设计用例
因为我没用过百度app,换成:安卓机下,抽奖功能如何设计测试用例
8.做个题吧:
nums = {1, 2, 2, 3, 4, 4, 5}; k=9
求能够总和构成k的子数组有多少个?(不用去重,子数组不用连续)
①DFS
public class Main { public static int res = 0, len = 0, k=0; public static int[] nums; public static void dfs(int status, int sum) { System.out.println("status: " + status + ", sum: " + sum); if(sum==k){ res+=1; return; } if(status>=len || sum>k) return; dfs(status+1,sum);//不选 dfs(status+1,sum+nums[status]);//选 } public static void main(String[] args) { nums = new int[]{1, 4, 5}; len = nums.length; k = 9; dfs(0,0); System.out.println(res); } }
②DP
public class Main { public static void main(String[] args) { int[] nums = {1, 4, 5};//假设都是正数的话 int len = nums.length; int k = 9; int[] dp = new int[k + 1]; dp[0] = 1; for(int i=0;i<len;i++) { for(int j=k;j>=0;j--) { if(dp[j]>0 && j + nums[i] <= k) { dp[j+nums[i]]+=1; } } } System.out.println(dp[k]); } }
好气啊!!!!! 因为java写dfs、bfs写的少了,逻辑什么的都是对的,但是用状态压缩的时候if((a&b)==0)的内层括号忘记加了,还有各种一些调试上的问题最后跑都没跑通,气的想锤死自己
8.安卓发生崩溃(Crash)的时候怎么输出日志
adb logcat -d > logcat.txt
追问:如果要看包含error的有几行,怎么看?
grep -c "error" logcat.txt
#牛客创作赏金赛#