入职不到一个月,大领导叫我去带三十人的团队入职不到,薪资提升 70%,这会不会有坑。。
刚刷到个程序员网友吐槽:才入职一个月,大领导就让他带三十人团队,还承诺薪资提升70%。他纠结这是不是坑,问大家该不该去。
我觉得这事吧,首先得警惕,职场不是开挂升级游戏,突然给你这么大甜头,背后大概率有“隐藏任务”。程序员都懂,系统突然给你高权限,多半是要你背锅或者去填大坑,特别是带三十人的团队,这不是业务小改,是架构级的挑战。
网友们的回帖有的说机会难得,有的说小心被PUA。我的看法是,这种“天上掉馅饼”的事,八成是让你用加速度燃烧自己,特别是新人,很容易高开低走。关键要搞清楚为啥前任不干了,自己有没有话语权,以及升职涨薪后能不能hold住团队。
程序员讲究性价比,这种offer一定要权衡风险和收益⚖️。别一味追求跳跃成长,职场升级打怪,也得留条后路。【备注:文末可领最新资料】
算法题:网格游戏
先说下这题背景,网格游戏大概意思就是给你一个二维的棋盘(一般m行n列),有些格子是障碍,有些能走,让你找一条路径,可能是从左上角走到右下角、也可能是找最多的金币,反正套路差不多,考察的核心还是动态规划。你们不要一看到DP就头疼,其实它本质就是记住已经走过的地方,别白白重复劳动。
刚开始写的时候我脑子里其实还乱着,什么BFS、DFS想了一堆,后来发现其实大部分网格题,只要你能把每个点的最优状态“存”下来,思路就清楚了。举个常见点的例子:从(0,0)到(m-1,n-1)每次只能往右或者往下走,有障碍就得绕,问你有多少种走法。
我当时直接java开了个二维数组dp[i][j],表示从起点走到(i,j)的方法数。然后一顿初始化,什么dp[0][0]=1,障碍点就直接设0,后面推导的时候dp[i][j] = dp[i-1][j] + dp[i][j-1],前提是别越界也别走到障碍上。写代码的时候还被猫踩了下键盘,漏写了个分号,调了半天,气死我了。
代码也很朴素,你们凑合看看:
publicintuniquePathsWithObstacles(int[][] grid){
int m = grid.length, n = grid[0].length;
int[][] dp = newint[m][n];
// 起点有障碍直接GG
if(grid[0][0]==1) return0;
dp[0][0]=1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(grid[i][j]==1) {
dp[i][j]=0;
continue;
}
if(i>0) dp[i][j] += dp[i-1][j];
if(j>0) dp[i][j] += dp[i][j-1];
}
}
return dp[m-1][n-1];
}
就这个,没啥高大上的,但用的时候很香,尤其是你调完试用数据,发现能通过那种边界测试,什么起点终点都堵死的那种,特别有成就感。后来小李问我能不能只用一维数组优化空间,其实思路一样,就是每次只记录当前行,稍微绕一点。
顺带提一句,有些变种网格题,比如要求收集最大金币数的,也可以用DP,dp[i][j]存的是到(i,j)最大金币数,每次dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1])+grid[i][j],还是别忘了判下障碍。就这种场景,基本晚上睡不着就可以刷着玩。
啊,对了,有些极端情况,比如整行或者整列全是障碍,直接返回0就完了,别老想着花活。
反正吧,这类网格DP题你只要记住“每一个点只关心自己上面和左边(或者相关方向)的状态”,不走重复路就行了。其实和生活一样,走过的弯路记住,下次别踩坑。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html