type
status
date
slug
summary
tags
category
icon
password

找工作的几点标准

核心:可以安心做事情,能够让自己快速成长,最最重要的是自己知道自己想要的是什么,又有自己的职业规划

  • 平台、发展:稳定、有平台支撑,能开阔眼界,能遇到一些有追求、有上进心、有热情、有能力、有执行力的人,一起认真做事情,这样也就不用担心看不到未来
  • 工作氛围和老板、团队 leader:好的工作氛围和好的团队里面,能带给你的是支持和积极的态度,能够激发你的动力以及活力。好的团队是积极沟通的团队。
1.个人期望
  • 平台、发展:基本稳定
  • 工作氛围和老板、团队 leader:积极上进,能让自己快速成长,共同进步
  • 薪资、福利:该给的能给到就行
  • 加班:可以接受
2.行业、环境(以上海为例)
  • 金融
  • 房地产
  • 旅游
3.匹配度
  • 他们需要的正好是我现在或短期内有能力给予的
  • 价值观:
    • 干实事
    • 高要求、不含糊
 

什么公司靠谱?

rank 跨界码农 2015年05月17日 14:48
现在互联网的水太深。
先八卦 BAT.
我就先只说 BAT 吧,在北京要找工作必然会看狼厂,那多说点。
狼厂现在比较乱。各部门调整多,从高层到底层没有不调整的。频繁折腾让人心比较累,大量社招带来文化冲击、晋升也越来越水、只对上不对下的管理、至上而下 KPI 的文化使技术边缘化。原来的靠谱的老员工(指的是 2005-2011 年批次入职员工)陆续离开。
05-11
很多人理解不了,我作个简单的解读。社招招人傻给钱,所以有同一级别,薪资相差一倍的。还有今年初的职称评定迟迟不敢发结果,这本身就说明了一些问题。狼厂现在总人数应该比阿里还多,应该 3 万了吧,所以说有的部门还说缺少,实际上是人太多了没事瞎折腾,内斗。如果你想做事,3 万人当中也就是个百牛一毛了。有兴趣上无秘上看,狼厂的新闻是最多的了。
虽然去年年终奖有几个业务线拿了大红包,也有传闻说今年会大幅加薪,这个福利应该感谢我们这些离职「百老汇」人贡献,但就算年终奖和大幅架薪从现在看,员工 2015 年 4 月后离职率猜测也低不了。
看到这样的情况也还是有不少人会进厂里,那是因为百度技术品牌还有价值。校招学生以及小年轻求职者想在大公司要点光环,为未来职业发展铺路是有帮助的。再就是给钱多,只奔着钱和级别去,公司再乱都不管。
是时代变了还是当年那个技术的百度已不在,唯剩下深度学习这片厂长直接管辖的技术土壤。其他的团队进去就看造化了,遇到靠谱的业务和老大那就是福气,要珍惜。
总之,现在社招选择进狼厂需要多考虑业务与老大。
我自己对百度总结是:自俞军走了,百度就没有了产品的根;而老百度人走了,百度就没有了魂。
notion image
作为一个从狼厂出来的人,我祝福它未来能够回归本真,也能重新重视技术。但现在,也只能一声叹息作罢。
notion image
去过几次阿里也与他们的人有深度沟通,不算有非常深的了解,了解一二。阿里自从上市之后属于非常自信的那种,有次和他们的人聊,据说内部的目标是 3000 亿美金到 4000 亿美金,上市之后 100 刀还说是低点。
HR 也有点天下无敌气场较强,我大阿里平台你要是不来是错过了多么多么好的机会似的。有人会问,这样的 hr 是不是个别现象,据我所知,这还真不是。简直全中国只有他最摇摆。
参加技术会议也是,因为你可以看到国内的各技术会议都有他们的大量广告植入,搞技术品牌部的人都觉得我大阿里牛逼,聊天的时候说话音量都要比其他人大声一点。我觉得很好奇的是,这些人是怎么想的?
子系山中狼,得志便猖狂。这对每一个从创业阶段到上市的公司来说,都是个警示。
比较逗的是,阿里在北京工作的人有的部门可能一年有 1/3 的时间是在杭州,有的时候从北京飞杭州的飞机上你可以看到:哇,原来你是 xxx 部门的,你怎么也去杭州,你什么时候去的呀。一天他们来回的人数应该有接近百人了吧,让人稍羡慕的也就是可以多攒里程。所以,base 在北京与 base 在杭州是一样的。
不论 BAT 怎么样,他们都有很宽的护城河,暂时也垮不了,能拿到 Offer 也不易,会吸引很多在大学生到公司 Get BAT 梦,得到光环。
现在创业公司这么火,跳槽也都会考虑创业公司,加入分一杯羹,既成长还能得到创业成功的红利。那就说说创业公司常见的几个陷阱。
工资陷阱.
前两年一些公司新成立时薪资同比互联网公司高 20%-50%,但到现在老大换了两轮,目测可能还会继续换。
为什么会这样?没有互联网的基因,用砸钱招人手段解决不了根本问题。另外是最早的技术团队,如果老板不懂技术也不去找一个能信任的技术联合创始人那后期能建成良好的技术体系就是奇迹。看一些电商网站现在基本每次促销都挂,最严重的一次是网站故障 3 天不能访问。也是一样,没有得到 CEO 和董事会群体信任的技术团队。技术人员在这样的公司是比较被动的。
虽然现在小的创业公司给的工资一般都比 BAT 要多。但是遇到离谱的先别高兴太早,仔细想想能拿多久这样的工资,并且公司垮了对于你来说你是否能承受。
资本陷阱.
资本是很好的工具,用它能变成公司市值的扛杆。从财务指标 KPI 上变魔术把公司的市值做高。做得好可以像小米一样,做得不好能力 hold 不住的,资金链现金流出现问题,崩盘的可能性就非常高。
那怎么看资本型的公司是否靠谱?答案是看老板和核心团队靠不靠谱。
老板把公司只当生意和跳板,那做技术的人还是别趟那混水了。核心团队的人能力有个误解,能力靠谱不是从 BAT FLAG 的工作背景看,公司背景只能说明他们有能力进那些大公司,但不一定合适创业。做事的热情在创业的初期很重要,在遇到挫折时大公司背景的人不一定能扛住事,因为他们的退路太多,也不一定有兄弟情。
别到头来老板们倒买倒卖赚了钱,把公司散伙,你什么都没落着。每个人都希望所在公司上市,能提前退休,但也要看老板。你看人人网几前年还蛮风光的,现在呢?整个上市公司的利润都靠公司老板资本得利来支撑,而不是公司本身的盈利能力,这太搞笑了 — 公司对于他们可能就是玩具,对你来说是青春,慎重考虑
总之,依靠资本类型上位的公司没有很好的现金流,老板及核心团队不靠谱的话。只能祝你好运。
方向陷阱.
「初创」型的公司方向都是不确定的,会不停的尝试找到最合适团队的方向。
假如你感兴趣在线教育,加入了一个 A 轮英语教育的公司,经过几个月公司可能会变成做汽车类产品。如果你不能接受,趁早转到稳定的 C 轮后公司。
对于求职者来说也要成熟点,不要天天说我想做这个领域,喊着说自己 idea 很多什么的。要客观的看,创业公司要执行力强,idea 特别是在中国这个社会真不是那么重要。而且创业能成功本来就少,不要以为加入一个创业公司就能上市,如果一定要找上市公司还是去 BAT 吧。
创业是一种人生价值的体现,是一种能力升华的过程。
什么是靠谱公司.
说到底,什么是靠谱公司?除去 BAT,创业型未上市的公司,其实选的逻辑也很简单,看原来上市公司为什么成功,以及现在最有可能上市公司里他们的共性是什么呢?我选择该公司 3 点:
1. 所处行业未来趋势与规模。
2. 发展速度超越行业速度。
3. 创始人老板和核心团队靠谱。
上面 3 点其实就是的「高度」、「速度」、「态度」的解读了。
就拿 3 点来选,已经所剩无几,然后再挑是不是合适自己的最后也就只剩下一两家而已。
 
notion image
跟岗位无关的不要写
推荐使用markdown
写有门槛的内容
精通是红线,谁写谁死
熟练掌握一两处
了解、简单了解
优化、动画、安全
 
notion image
notion image
面试者如何资深基础不够扎实,实力不够合格
技巧没有什么作用
学习没有捷径可以走
 
编程部分心得
在面试过程中,面试官常常会给出几道算法问题,需要面试者提供思路或写下代码。在大多数公司的面试中,这一部分的表现都非常重要,而对一些外企来说,这部分的表现是具有决定性的(甚至是唯一重要的表现)。对于这部分的准备,首推LeetCode等网站,这里不再赘述。再提几句话,对于一些重视算法问题的公司如Google, hulu, airbnb, 微软, 头条等,不要抱着可能撞到原题的心态去准备,很难撞到原题的,对于这些公司,你需要做的就是反复练习提升自己的能力,而且由于题目较难,需要有较多的训练量。而另一些不是很重视这类问题的公司像阿里、腾讯什么的,则刷一些常见的题目就很可能撞到原题了,而且难度一般不大。因此,根据target公司的不同,可以有不同的准备方式。下面将列举一些其他在面试中我认为比较关键的点。
 
hulu
不要抱着撞到原题的心态去准备
很难撞到原题
反复练习提升自己的能力
notion image
 
这段代码是一个用于计算二叉树高度的递归函数。它通过递归遍历左右子树来获取每个子树的高度,然后取其中较大的高度,加 1(即当前节点层)作为总高度返回。

代码分解

  1. 函数签名
    1. 这个函数接受一个指向二叉树根节点的指针 root,返回一个整数,即树的高度。
       
      遍历左右子树 获得每个人子树的高度
      选取其中比较大的高度
      +1作为总高度返回
       
       
  1. 基准条件
    1. rootnullptr(空节点)时,直接返回 0。这表示空树的高度为 0。该条件是递归停止的基准条件,避免无限递归。
       
      判断空节点
       
  1. 递归求解左右子树高度
      • 递归调用 getHeightOfBinaryTree(root->left) 获取左子树的高度并存储在 left_height
      • 递归调用 getHeightOfBinaryTree(root->right) 获取右子树的高度并存储在 right_height。、
       
      左子树的高度 右子树的高度
      getHeightOfBinaryTree 获取左子树的高度,存在left_height
       
       
  1. 返回高度
      • 使用 max 函数对比左右子树高度,选择其中较大的值。
      • + 1 表示当前节点也算作一层。
 
返回较大的值 当前也算是一层
 

运行示例

假设有一个简单的二叉树:
  • 调用 getHeightOfBinaryTree(root)
    • 对根节点 1 进行递归调用 getHeightOfBinaryTree(1->left)getHeightOfBinaryTree(1->right)
    • 继续递归,最终获得左子树高度为 3(节点 1 → 2 → 4),右子树高度为 2(节点 1 → 3)。
    • 返回 max(3, 2) + 1 = 4,即树的总高度。
 
int getheightofbinarytree
if (!root) return 0
if 左子树(把数值放在左子树上)
if 右子树(把数值放在右子树上)
 
练习白板编程
面试的编程部分往往是白板编程:面试官要么要求在一个类似于Google Doc的地方写代码,要么就是干脆在白纸上写代码。这种情况下coding的体验与平时使用IDE的体验是完全不同的。以Google Doc为例,许多人(比如我)一开始甚至很难写出能编译的代码,更别说一遍写出bug-free的代码了。同时,没了IDE,debug的难度也会大大增加。而在白纸上写代码的难度则还要更进一步。适应白板编程的方法也很简单,只需要足量的练习即可。
 
google doc 的代码
bug-free
debug的难度大大增加
 
问清题目
问清题目至关重要。如果你对面试官的编程问题理解得不清晰,那你应该立刻问一些能帮助你理解的问题。例如:数据范围是多少?这个数组的大小范围是多少?能不能给个样例?如果输入是这个,那输出应该是什么等等。在上面这个简单的问题中,可以问的一个问题是,二叉树的高度是什么(据我所知,高度的定义并非所有教材都一致)?
 
帮助你理解的问题 数据范围是多少
数组的大小范围是多少
给个样例
如果输入是这个,那应该输出什么
 
许多面试官在面试的时候,会故意先抛出一个模糊的问题。实际上,他们希望面试者能够经过一些询问理解问题。在这个过程中,面试者能够展现出自己对问题的分析能力以及沟通的能力。前者的重要性参见编程珠玑第一章:明确问题,战役就成功了90%。后者的重要性在于,问清题目的这个交流过程与面试者入职之后与同事讨论问题的形式非常类似。显而易见,一个能够很难沟通的面试者也很难成为一个很好沟通的同事。
 
展现自己对问题的分析能力以及沟通能力
明确问题
一个难沟通的面试者也很难成为一个很好沟通的同事 要跟对方去主动确认能力范围内的问题
 
如果没有问清题目,那会发生什么事情呢?在最坏情况下,面试者可能会花大量时间去解决一个完全错误的问题,面试结果也可想而知。或者运气好些,碰到了一个比较nice的面试官,给一些提示告诉面试者已经进入误区了,但这样不仅会浪费不少珍贵的面试时间,更会降低面试官对面试者的评价。我在面一家公司的时候,面试官给我出了一个题,这个题听上去比较困难,需要用到动态规划才能实现。我当时想,在面试开始阶段就给出一道比较困难的题,这对我来说也太不友好了!于是我询问了一句”数据的范围是什么呢?“面试官告诉我,数组的范围都是0-10的整数。这样的话,这个问题就变成了一个只需要6行代码就可以解决的贪心问题。如果我没有问清这个问题的话,面试的难度显然大大增加。
 
数组的范围是0-10的整数
 
与面试官确认函数签名
确认了题目之后,我认为合理的做法是先和面试官确认函数签名,也即输入是什么参数,输出是什么参数等等。这一步的代价很低,而且相当重要。第一,这可以告诉面试官,你对函数签名的设计相当重视,而这一点在实际应用中很有价值。第二,这可以进一步帮你确认自己理解了题意。一个合理的函数签名可能就类似于LeetCode题目里的函数签名。上面代码中的签名就是一个比较合理的签名。
 
确认函数签名 输入输出是什么参数
函数签名设计
 
设计简单的测试样例
写完了函数签名之后,可以针对函数签名简单地设计一组测试样例(如果面试官之前给了样例的话,也可以直接用面试官给的样例作为测试样例)。设计测试样例地主要有三个目的:一是进一步帮助确认自己对题意的理解没有出偏差;二是告诉面试官自己对测试十分重视;三是提醒自己编码完成的时候测试自己的程序。
 
提醒自己编码完成后测试自己的程序
 
与面试官确认思路
在自己有了一个思路之后,一定要和面试官确认这个思路是否合理。你可以给面试官解释你的思路为什么合理,面试官可能会和你讨论其中的一些要点。这样做有几点好处。第一,在解释的过程中,你的思路也会变得更加清晰(面试官充当小黄鸭)。第二,这也展现出你对沟通的重视性。第三,可能也是最重要的一点是,如果你的思路不正确,nice的面试官会提示你甚至直接指出错误所在,这样你至少不会在一个错误的思路上耽误太多时间。切忌有了思路之后,不与面试官交流直接写代码。尤其需要指出的是,如果你的思路对数据有什么假设,或者需要修改输入数据,那一定要和面试官确认这样的做法是合理的。
 
跟面试官确认这个思路是否合理
解释思路为什么合理
 
沟通的重视性
切记有了思路之后,不与面试官交流直接写代码
 
如果你认为这个问题与某个经典的问题思路一致,或者可以用到某个经典的算法,那么就直接点出来。例如计算二叉树的高度,实际上是一个后序遍历,那么可以直接点出来。
抓住面试官给的提示
有的时候一道题难度比较大,候选人一时想不到最优的思路,或者目前提出的思路是错误的,那合格的面试官可能会给一些提示帮助候选人思考,这时候候选人一定要抓住面试官给的提示。以上文给的例子为例,如果候选人想不到思路,那面试官可能会提示:“你觉得一棵树的高度与它的左右子树的高度可能有什么样的关系?”这就提示候选人可以用递归的方式来解决问题。抓住提示是很重要的:一方面,面试官给的提示很可能可以帮助你想到正确/最优的思路;另一方面,这其实也是双方能够进行不错的沟通的体现。
 
后序遍历(Post-order Traversal)是一种二叉树的遍历方法。在这种遍历中,按照以下顺序访问每个节点:
  1. 左子树
  1. 右子树
  1. 根节点
后序遍历的特点是“左右根”的顺序。这意味着在访问某个节点之前,先访问它的左子树和右子树。对于树的根节点,这种遍历会先遍历整棵树的所有节点,再最后访问根节点。

示例

假设我们有一个二叉树如下:
后序遍历的顺序为:4 → 5 → 2 → 3 → 1
节点数可能是身兼数职的
 

后序遍历的应用

后序遍历在一些需要先处理子节点再处理父节点的场景中非常有用。例如:
  • 文件系统的删除:删除一个文件夹前先删除其子文件夹和文件。
  • 表达式树的计算:在表达式树中,后序遍历可以用于计算值,因为操作数出现在操作符之前。
 
处理子节点再处理父节点的场景很有用
文件系统的删除
表达树的计算
用于计算值
 
二叉树在计算机科学中占据着举足轻重的地位,原因在于它的结构灵活性高效的数据操作,使得它在很多场景中都具有广泛的应用。以下是二叉树重要性的几个核心原因:

1. 高效的数据存储和检索

  • 二叉搜索树(BST):二叉树的一个常见应用是构建二叉搜索树,能够在 O(log n) 的时间复杂度内完成搜索、插入和删除操作(假设树是平衡的)。这是因为在 BST 中,左子树的节点值小于根节点,右子树的节点值大于根节点。通过这种结构,数据可以有序存储,方便快速检索。
  • AVL树和红黑树:这些都是自平衡二叉树的实现,它们能够保证数据操作的时间复杂度始终为 O(log n),这是在数据库和文件系统等需要频繁数据访问的场景中特别重要的。
 
数据库和文件系统 频繁数据访问
 

2. 简化递归操作

  • 二叉树的递归特性非常自然,例如前序遍历、中序遍历、后序遍历等,使得递归算法在树结构上变得简单且高效。很多复杂数据结构(如图、B树、哈夫曼树等)都可以通过递归构建并管理。
  • 比如,在表达式树中,后序遍历可以用于计算复杂的算术表达式,能够直观地表达并实现递归结构。

3. 灵活的结构扩展

  • 二叉树可以轻松地扩展成其他复杂的数据结构。像堆、二叉堆、平衡树(如红黑树、B树)等结构都是二叉树的变体。这些结构在操作系统、数据库、网络路由和图形渲染等领域有着重要的应用。
  • 堆排序基于二叉堆,广泛用于优先队列和资源调度算法,B树及其变种(B+树)是文件系统和数据库索引的基础。

4. 用于高效的压缩和编码

  • 二叉树在数据压缩中起着重要作用,例如哈夫曼树。哈夫曼编码是一种无损压缩算法,它通过构建哈夫曼树将频率较高的字符编码为更短的二进制编码,从而实现高效压缩。JPEG和MP3等格式也使用了类似的编码方式。
  • 在通信和数据传输中,哈夫曼编码可以降低带宽需求和存储空间。

5. 自然表达层次结构

  • 二叉树非常适合表示具有层级关系的数据结构,例如组织结构图、家谱、决策树等。在这些应用中,二叉树能够清晰地表示父子关系,使得数据的结构和操作更加直观。
  • 决策树在机器学习中用于分类和回归问题,通过递归地分割数据集,形成预测模型。这也是很多分类算法(如随机森林和梯度提升树)的核心。

6. 图形学和路径查找

  • 在图形学中,空间划分树(如四叉树、八叉树和 BSP 树)是二叉树的扩展,用于场景分割、碰撞检测和光线追踪等操作,可以大幅度提升图形渲染的效率。
  • 在路径查找算法(如 A*)中,二叉树能有效地表示分支选择和路径优先级。

总结

二叉树之所以重要,归根结底在于它提供了高效的数据管理、递归友好的操作、灵活的结构拓展良好的层次关系表示。从数据库和文件系统到人工智能和图形渲染,二叉树已经深深嵌入到了计算机科学和工程的方方面面,几乎是每一个复杂算法的基础。
 
 
 
 
 
 
 
 
 
 
 
Relate Posts
警醒自己————我只是足够幸运才能够轻装简行有资格走难走的路,但切勿嘲笑负重前行被迫跟着拥挤的人们
Lazy loaded image
这就是Chatgpt 阅读笔记
Lazy loaded image
经验教训
Lazy loaded image
史蒂夫·沃兹尼亚克
Lazy loaded image
阅读List
Lazy loaded image
《终极算法》阅读笔记(一)
Lazy loaded image
北京拾荒20年:你的京城,我的废都北京式“教育控人”:用赶走孩子,来赶走家长
Loading...
盛溪
盛溪
盛溪的学习&生活博客
Latest posts
经验教训
2025-3-6
马尔萨斯陷阱+内卷化认知
2025-2-27
法属阿尔及利亚
2025-2-27
北京切除:京林公寓最后一夜,最后一人
2025-2-27
Research about Computational Economics
2025-2-27
Choice of direction
2025-2-27
Announcement
🌟 欢迎来到盛溪的博客!🌟
大家好,我是盛溪。在这里,我将分享我的生活感悟、学习心得以及其他一些有趣的发现。希望我的文章能为你的生活带来一点启发和乐趣。
📅 更新通知:
  • 我会定期更新博客,分享新的内容。你可以通过RSS订阅或关注我的社交媒体账号来及时获取更新通知。
💬 互动环节:
  • 如果你有任何问题或想法,欢迎在评论区留言。我非常期待与你的互动!
📚 推荐阅读:
  • 不定期推荐一些我觉得有价值的书籍或资源,希望能对你有所帮助。
感谢你的访问和支持,希望你能常来逛逛!
盛溪敬上