字节番茄小说客户端日常实习二面凉经

几乎没啥项目相关,感觉是八股扣的很细。差点把魂面没……
答得比较磕巴
经典1h

1. 两个app,一个是IO密集型,一个是计算密集型,设置线程池,主线程池执行这些任务,应该分别设置多少条线程数?(追问:为什么??IO会释放cpu资源吗?(当时我回答有点问题,说IO占用时间比较长,应该是释放,然后IO等待时间比较长,这时cpu是空闲的)
2. 多线程有什么安全问题?加锁解决了什么线程安全问题?为什么加锁可以解决这些问题?
加锁怎么保证一个线程执行的?怎么做到的?代码层面是怎么实现的?Java锁的底层原理?(这几问差点崩
3. 运行时怎么判断两个对象的类是不是同一个类?包名和类名是一样的是同一个类吗?(类加载器……
4. 泛型擦除怎么理解?是什么?为什么需要?
5. 100万个数取最大的前100个怎么做?堆里有几个元素?(把最小堆说成最大堆了。。幸好最后灵光一闪改过来了
6. https可以被抓包吗?(二编:才想起来会不会想问我中间人攻击相关问题……但是我直接说可以抓到加密的包……感觉凉了。。
最后算法是力扣中等题:二叉树右视图
有惊无险吧,最后答的应该都还可以,反问的时候问了岗位挑战和新人应该怎么融入团队,都挺详细的
问啥时候出面试结果说两天内能出 会赢吗?!

许愿许愿过球球了 #字节跳动# , #字节面经#
——————
9.22 已凉还是乖乖上课吧
全部评论
牛牛牛,佬可以看看简历么?
点赞 回复 分享
发布于 2025-09-24 00:44 四川

相关推荐

import java.util.ArrayList;import java.util.Scanner;/*** 费用报销 - 二维最大价值 DP(完全背包风格)** 题意:选若干张发票报销,任意两张日期差 ≥ k 天,总金额不超过 m,求最大可报销金额。** 状态定义:dp[i][j] = 只考虑到第 i 天(1..i),在容量恰好为j的情况下,所能存的最大价值* 这道题的状态定义不一样,因为递推关系由i-k转移而来,** 递推:* 1. 不选第 i 天任何票:dp[i][j] = dp[i-1][j]* 2. 选第 i 天的一张票 v:必须从“第 i-k 天及之前”的状态转移(保证与上一张间隔≥k),*    dp[i][j] = max(dp[i][j], dp[i-k][j-v] + v),其中 j >= v* 3. 当 i < k 时,不能从“更早一天”转移,只能把“只选第 i 天一张 v”当作起点:dp[i][v] = max(dp[i][v], v)*/public class Main_Knapsack2D {static Scanner sc = new Scanner(System.in);static int[] pre = {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};public static void main(String[] args) {int n = sc.nextInt();int m = sc.nextInt();int k = sc.nextInt();ArrayList<ArrayList<Integer>> a = new ArrayList<>();for (int i = 0; i <= 365; i++) a.add(new ArrayList<>());for (int i = 0; i < n; i++) {int mon = sc.nextInt();int d = sc.nextInt();int v = sc.nextInt();int day = pre[mon] + d;a.get(day).add(v);}int[][] dp = new int[366][m + 1];// dp[0][*] 已为 0,表示第 0 天、不选任何票时,任意容量下最大金额为 0for (int i = 1; i <= 365; i++) {// 先继承“不选第 i 天”的情况for (int j = 0; j <= m; j++) {dp[i][j] = dp[i - 1][j];}if (i >= k) {// 可以从第 i-k 天转移:选第 i 天的一张票 v,则 j 从 v 到 m,dp[i][j] = max(当前, dp[i-k][j-v]+v)for (int v : a.get(i)) {for (int j = v; j <= m; j++) {dp[i][j] = Math.max(dp[i][j], dp[i - k][j - v] + v);}}} else {// 前 k 天内不能“接”在更早的票后面,只能单独选第 i 天的一张票for (int v : a.get(i)) {if (v <= m) dp[i][v] = Math.max(dp[i][v], v);}}}// 容量维度不一定严格单调,这里安全起见在 0..m 中取最大值作为答案// 这也是为什么说,dp[i][j]是在前i天,容量恰好为j时的最大价值int ans = 0;for (int j = 0; j <= m; j++) {if (dp[365][j] > ans) ans = dp[365][j];}System.out.println(ans);sc.close();}}
点赞 评论 收藏
分享
评论
4
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务