前言
现在去外面找工作,都会问在当前公司的职级。
❝
如果当前公司没有职级,就会问在之前公司的,说是为了方便快速的筛选候选人。
但其实工作多年你会发现,职级晋升还会和,比如:运气、趋势、团队这些东西挂钩。
❝
有的5年升P7,有的7,8年都升不到,这里面:能力、经验、贡献,其实并不是最主要的。
业务需要
❝
如果是急需扩张的业务,那么进来的人都会定高P。
学会画饼
❝
给老板画一个他听得懂而且能拿得出手的饼,让他拿去给更大的老板画饼。
会做事在大厂不是核心竞争能力,至少不是高P的核心竞争力,会讲段子才是。
跟对团队
❝
小公司跟大公司不一样,小公司你能赚钱,就对老板有价值。
大公司的业务,谁都能做,谁做也没有太大的差别,那谁对公司的贡献大呢?
- 你做多做少,对公司都没什么实质影响。
但功劳在谁手里,谁就能从公司获得更多。
不过为了跳槽和涨薪需求,大家还是得了解下不同职级的一些要求。
下面是阿里P级别的能力要求!
P5
模块负责人!
❝
能写好代码,注意代码质量,并做好技术沉淀。
能独立思考,积极学习,主动沟通。
能力要求:
❝
基本上能完成一个大的项目分配的一个模块或者子任务。
通常来说复杂度不大,一个月或以上能完成,并且能发现简单的问题并能独立解决。
P6
小组内的技术骨干!
❝
能够独立提供项目模块的解决方案。
在技术上具有攻坚能力,能够理解自己的任务需求和团队其他人任务的关系,能够识别方案中存在的问题并给出改进方案。
能力要求:
❝
能完成一个大型项目的子模块,具有开发的闭环能力。
能够理解业务的核心目标,理解不同模块之间的具体关系。
能够对项目的应用场景做出技术选型,提供解决方案并完美落地。
P7
技术带头人!
❝
对自己负责的领域以负责人的身份充分理解业务与成员与团队的关系,具备一定的技术领导力。
能力要求:
❝
能够负责一个子领域的技术,知道该领域的核心问题。
能够在复杂环境下设计良好的技术框架,提供在行业领域内非常具有竞争力的技术方案并落地。
具有较强的的体系思考能力,对整体技术有完整的思考。
P8
行业专家!
❝
团队负责人,带领团队不断拓荒整合资源最终产生业务价值,是团队的领头羊。
能力要求:
❝
能够具备体系化的架构设计能力和技术布局能力,能与业务产生良好的协同关系。
具备行业技术视野和领域的专业性,有一定的技术影响力,能够带领团队不断拓荒。
普通程序员的天花板应该是P7,再往上不管是走技术还是走管理,都需要最核心的东西:机遇。
有啥其他看法,欢迎在评论区留言讨论。
❝
想看技术文章的,可以去我的个人网站:http://hardyfish.top/。
- 目前网站的内容足够应付基础面试(
P6
)了!
每日一题
题目描述
❝
给一个二叉树的根节点
root
,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:
- 节点的左子树只包含小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
解题思路
❝
中序遍历时,判断当前节点是否大于中序遍历的前一个节点。
如果大于,说明满足
BST
,继续遍历,否则直接返回false
。
Java
代码:
class Solution {
long pre = Long.MIN_VALUE;
public boolean isValidBST(TreeNode root) {
if (root == null) {
return true;
}
// 访问左子树
if (!isValidBST(root.left)) {
return false;
}
// 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false,否则继续遍历
if (root.val <= pre) {
return false;
}
pre = root.val;
// 访问右子树
return isValidBST(root.right);
}
}
Go
代码:
func isValidBST(root *TreeNode) bool {
pre := math.MinInt
var dfs func(*TreeNode) bool
dfs = func(node *TreeNode) bool {
if node == nil {
return true
}
// 访问左子树
// 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false,否则继续遍历
if !dfs(node.Left) || node.Val <= pre {
return false
}
pre = node.Val
// 访问右子树
return dfs(node.Right)
}
return dfs(root)
}
Python
代码:
class Solution:
pre = -inf
def isValidBST(self, root: Optional[TreeNode]) -> bool:
if root is None:
return True
# 访问左子树
# 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false,否则继续遍历
if not self.isValidBST(root.left) or root.val <= self.pre:
return False
self.pre = root.val
# 访问右子树
return self.isValidBST(root.right)
复杂度分析
❝
时间复杂度:
O(n)
- 其中 n 为二叉搜索树的节点个数。
空间复杂度:
O(n)
- 最坏情况下,二叉搜索树退化成一条链,因此递归需要
O(n)
的栈空间。
1️⃣网络安全零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》文末免费下载🎁
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
2️⃣视频配套资料&国内外网安书籍、文档
① 文档和书籍资料
② 网络安全/黑客学习视频
因篇幅有限,仅展示部分资料
3️⃣网络安全源码合集+工具包
4️⃣网络安全面试题
资料领取
上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 ↓↓↓ 或者 点击以下链接都可以领取
