【社招】百度一面
前文:
①感觉她是不是在看着题库出题啊,每次我说完了等她的反应都很慢;
②她是不是对我不感兴趣啊,业务和项目都没有深挖,我主要负责的也没有深挖
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
#牛客创作赏金赛#
查看12道真题和解析