二叉树调试常见问题问题,没有错误,无法运行

你真以为 Howell 被 Google 拒是因为没做出翻转二叉树么?
08:22:24 +08:00 · 10157 次点击
Homebrew 的作者Max Howell面试被 Google 拒啦,因为他不会翻转二叉树,然后作者在twitter上开骂:
1. Max Howell 是个什么鸟蛋?
Max Howell 是Mac上著名软件Homebrew的作者,Homebrew是什么?可以理解为Ubuntu上的apt-get,用这个软件可以轻松的装其他的Mac上的软件。主要是服务程序员的。这是一个非常重要的对于程序员来说不可或缺的Mac软件。
他的LinkedIn和Facebook:
年在读书,年在KDE工作,去了Last.fm 担任tech lead,年去tweekdeck也是担任tech lead。然后2011年开始创业,先后在Racket担任co-founer和在Popular Pays担任CTO。2013年开始,在Mobile Makers Academy上当instructor。
从这份简历来看,应该是一个很牛的人,大学里就开始在企业实习/工作,接着又创业,当co-founder,做CTO。最重要的是作为Homebrew的作者,让他名声大噪。
2. 翻转二叉树是个什么鸟题?
给出一棵二叉树,求这棵二叉树的镜像。如:
你可以去LintCode上试试看做做这题:
这个题目在LintCode上的难度属于Easy,根据LintCode的定义,如果Easy难度的题目无法在面试中答出来,确实是拿不到Offer的。
这个题的解法一句话就可以描述清楚:遍历二叉树的每个节点,然后将每个节点的左右儿子对调。
九章上的参考程序如下,只有8行……8行……8行……:
3. 到底为什么被拒?
面试被拒的原因按照惯例公司是不会告诉求职者的。虽然 Max Howell 从简历上看起来很牛,但是他被Google拒了。具体原因是什么?真的是如他所说的不会二叉树镜像么?那么我们首先要知道,IT企业决定是否Hire一个人的标准是什么。一般来说,主要有在下面三个方面的影响因素:
1)求职者的经历的牛逼程度
2) 企业是否有合适的职位给求职者
3) 求职者在面试中的表现
很显然Max Howell满足第一个条件。我们会一般认为,牛逼的人企业就应该给Offer。但是这是错误的观念。第二个条件和第三个条件的重要程度均超过了第一个条件。
对于第二个条件,试想一下如果公司不缺人,为什么还一定要招聘你?再试想一下,这个人在A领域很牛逼,但是公司需要B领域的人才,那么是该发拒信还是Offer?再再试想一下,如果公司空缺的职位所需要的人才只是花10w$请一个应届毕业生就可以搞定,为什么要花30w$来请一个CTO来做?以上三种情况,都极可能会发生在Max Howell的身上。
对于第三个条件,首先我们要知道面试的流程和面试官给求职者评价的依据。对于Max Howell这样的资深Engineer来说,一般来说面试可能包含如下的四个部分:Coding面试,Experience面试, System Design面试,Culture Fit面试。一般来说至少4名面试官会与你交流给你评价。所以你的面试结果并不是由一轮面试和一个面试官决定的,面试官只是根据面试的情况给出一个评价(hire, no hire, strong hire, weak hire),并说明具体原因。最后这些评价会提交给 Hire Commitee,由HR综合所有的评价给出是否Hire的决定。做二叉树镜像属于Coding面试,算法的考察是一个方面,Coding能力的考察也是一个方面。因此,只是说因为不会二叉树镜像而被拒,是不全面也不负责任的说法。公司并不会给你一个feedback告诉你为什么被拒,只是会告诉你,“这是一个艰难的决定,你很优秀,但是我们没有合适的职位给你,我们期待之后能够再联系”。另外还需要说明的是看似不起眼,但是非常重要的Culture Fit面试。在这一轮面试中,面试官主要考核面试者的内容是看看面试者是否能够和同事们愉快的工作。这方面没有一定的参考标准,但是从Max Howell的经历来看,这一轮的面试很可能无法通过。首先他很Geek。笔者周围的朋友中不乏技术非常牛逼的Geek,但这些人因为太Geek,EQ往往都很低,无法与同事愉快的一起工作,自己一个人干可以,但是在团队中,就非常糟糕,比如总觉得同事都比他傻逼,总觉得老板都是傻逼等等,虽然事实上可能他是对的,但是你愿意和这样的同事一起工作么?从Max Howell的工作经历中,依稀可以看到这一点——每份正式工作都不超过2年,在跳槽不那么频繁21世纪初,这是不正常的。
4. 到底怎样才能拿到Google Offer?
根据前面的分析,我们猜想Max Howell可能被拒绝的原因有如下的一些:
1) 因为不会写二叉树的镜像,表现出来的算法能力薄弱和无法与同事(面试官)一起合作解决问题的能力有欠缺。
2) 经历很牛逼,但这些经历更适合去一家创业公司,而不是Google这样的大公司。大公司更需要能够与人合作的人才。小公司才更需要单枪匹马的人才。
3) 有创业经历者,大公司在招聘时会有一些考虑。因为很可能呆不久就又跳槽了,或者挖人走,也可能不专心工作,自己搞项目。
4) 没有合适的职位提供给他,或招聘他的成本太高。
那么到底怎样才能拿到Google Offer呢?简单的思路是,避免上面这些被拒绝的原因即可:
1) 提高算法能力和Coding能力。算法能力体现的不只是算法的知识储备本身,更加是一个人是否是聪明的人的标志。对于Google这样的大公司而言,他不需要你已经具备在某个领域的很强的战斗力,而是希望你足够聪明就可以了。大公司是很愿意花时间去培养你的。而小公司正好相反。
2) 增强与人沟通和合作的能力。Teamwork是每个大公司都强调的求职者必须拥有的素质之一,一个teamwork方面有欠缺的求职者不仅仅无法做好自己的事情,更加会影响到团队中的其他人。以解决算法面试题为例,其实面试并不是一场“考试”(这是大多数人的误解),而是你与未来同事(面试官)一起合作解决问题的一次模拟。你是可以从面试官那里得到提示和帮助来一起解决算法问题的。一般面试中也会尽量避免算发性特别强的面试题,所以一般只是一些简单的如“二叉树镜像”这样的问题,根本没有难度,做不出来极有可能是求职者过于自负的心理抵触做如此简单的事情。
3) 别告诉面试官/HR你创业过。或许这个经历很牛逼,但那只是说明你适合去小公司,不适合来Google这样的大公司。
4) 在合适的时机找工作。通过内部员工或公司网站了解公司的招聘情况,是否缺人等等。如果你看到Google正在裁员,你被招聘的可能性是很小的。眼光放开阔一点,硅谷并不是只有Google才是好的IT企业。
59 回复 &| &直到
22:53:17 +08:00
& & 08:32:39 +08:00
& & 08:34:08 +08:00 via Android
自干五思维,楼主哇
& & 08:38:19 +08:00
我只能说,这篇软广不错。
& & 08:42:09 +08:00
v2ex上的软广都这么高大上
& & 08:46:48 +08:00 via Android
道理我都懂,但是为什么Google没有要Howell呢?
& & 08:52:09 +08:00 via iPad
关于影响因素2,Max 在原推下面回复说是面试 iOS tools 职位的,所以Google有对应职位的。而且我猜Google这样的公司应该不会碰到一个自己需要领域的大牛,但是因为只需要一个应届生干活就给拒了吧。况且如果真不需要大牛,完全可以别请他来面试的。
影响因素3,他能管理一个大型开源项目,与人沟通能力应该不是问题?
大公司不喜欢创业过的,这个不了解,真的有这个事吗?Google也收购了不少创业公司,很多不就是为了人才收购吗?
& & 08:55:28 +08:00
楼主纯扯淡,google确实有可能因为不会刷题就据了你,因为大部分的面试官之前可能就是刷题进去的,什么样的人招什么样的人,不过我也并不了解整个事件。
& & 08:57:11 +08:00
LZ 想太多了吧。
后来才发现是软广。
& & 09:04:04 +08:00
这个完全是yy出来的吧
& & 09:12:02 +08:00
不觉得第二三点比第一个条件重要得多
& & 09:21:39 +08:00 via Android
楼主这么吊,是在谷歌吗
& & 09:21:43 +08:00
坐等“我就是面试Howell的那个HR”系列
& & 09:30:11 +08:00 via iPhone
毫无营养的文章
& & 09:43:27 +08:00 via iPhone
面试嘛,我一直觉得运气实力一半一半
& & 09:49:45 +08:00
楼主你是在Google的HR部门工作还是Google的员工啊
& & 09:52:27 +08:00
我想说这软广好长~~
& & 09:55:50 +08:00 via iPhone
看lz的头像和文内链接所以这是个软文啰?
& & 09:56:38 +08:00
&这是一个非常重要的对于程序员来说不可或缺的Mac软件。&
你没觉得这句话读不通吗?不应该是“这是一个对于程序员来说非常重要的、不可或缺的Mac软件。”
& & 10:05:39 +08:00
@ 我感觉他这是英式汉语
& & 10:05:42 +08:00 via iPad
除认为“避免被拒思路”第3点有较大争议外,对其余观点基本无异议。
这篇文章从实务出发,比较有价值,为何诸位如此的排斥?放任自身“洁癖”倾向,甚至任其影响自己的判断标准和选择能力,一面得意于对小小瑕疵的敏感,另一面却草率的拒绝有价值的知识和经验,这种做法睿智吗?
& & 10:06:56 +08:00
喷了,写的好像作者是Google面试官一样
& & 10:13:57 +08:00 via Android
楼主这篇文章写得真是非常实在的。现实中的面试(大部分)都像楼主分析的那样。
& & 10:25:03 +08:00 via Android
居然不是 @++ 发的帖子
& & 10:33:44 +08:00
软广,鉴定完毕
& & 10:39:56 +08:00
@ 没准真是。九章的团队都是肉翻到google facebook的工程师,当过面试官不足为奇。
& & 10:48:06 +08:00
“他不需要你已经具备在某个领域的很强的战斗力,而是希望你足够聪明就可以了。”
===================================================
非常同意这句话。所以你会发现很多名企招的名校的应届生对实际工作中具体的某个项目或者某个技术知道的并不多,甚至是空白的。但人家更看重的是“学习新事物”的能力。
& & 11:28:52 +08:00
@ 还真是……参见25楼。
& & 11:44:33 +08:00
记得whatsapp作者面facebook的时候不是一样拒了么 后来f家可是花了大价钱买回来的啊
& & 11:46:42 +08:00
软广直接block...............
& & 11:48:18 +08:00
什么,原来是软广?
& & 11:48:24 +08:00
block 你推广你的产品不是不可以,恶心的就是拿别人来做标题。
& & 11:49:58 +08:00 via iPhone
写的很棒!
& & 11:51:11 +08:00
就是,官话连篇
& & 12:01:01 +08:00 via Android
看了下 id 原来是软广……
& & 12:05:43 +08:00
我决定 block 掉那些专门发软广的,比如那个什么 ping++,什么牛课网,还有楼主这个帐号。
太心累了,仔细看了半天最后发现是个软广。。。要发广告就直接发好了,折腾那么多干啥,大家又不是傻子
& & 12:06:52 +08:00
Lintcode不支持Ruby这让我情何以堪
& & 12:48:36 +08:00 via Android
@ 九章的讲师还真是都是flag里的,也都当过面试官……
& & 12:53:41 +08:00
软广不错,差点被钓进去了,看到LZ的头像才反应过来。。
& & 14:33:32 +08:00
『企业是否有合适的职位给求职者』?
有些时候招募一个人就是招募一个部门。招徕一个人才就是储备一种可能性。
& & 14:34:12 +08:00
但是这个软广真的蛮有意思的~~~
& & 15:13:40 +08:00
最后发现是软广
& & 15:16:19 +08:00
这篇文章写得不错,植入也非常到位
& & 15:32:51 +08:00
看完觉得怪怪的,里面充满各种猜测,论据根本站不住 脚。。。。
回头看才发现是篇软文呀。。
& & 15:36:37 +08:00
看到后面再看作者的图像和标题,才发现我错了
& & 15:52:17 +08:00 via iPad
这么用心的软广应该点个赞才对呀 干嘛屏蔽
& & 15:56:23 +08:00
抄知乎的回答最好写个转吧
& & 15:56:42 +08:00
& & 15:59:49 +08:00
& & 18:50:36 +08:00
本来以为自己写的,没想到是抄袭别人的,呵呵。我就说广告者怎么变得这么有素质了。
& & 19:49:40 +08:00 via Android
好长,看了跟没看一样,没有八卦也没有干货。
& & 19:52:51 +08:00 via Android
浓浓的知乎味
& & 22:39:21 +08:00
广告就直接发,别发这种软广,真让人反感,浪费时间。
& & 23:12:34 +08:00
可以砍了么,这种.
& & 23:12:54 +08:00
看第一句,然后下意识的看了下头像,就知道是软了。
不过我还是看完了。
& & 00:58:52 +08:00
@ @ 我们是在得到该作者允许下发的呢。
& & 01:55:18 +08:00
其实很多时候面试就是跟你讲一个名词,比如:翻转二叉树
很多人连这个名词都没听过。。。。。
几年前我刷完了leetcode,但我表示我也从没听过这个名词。。。。
& & 02:07:15 +08:00
& & 08:04:31 +08:00
我就想知道这哥们为啥悲剧的,你丫却BB这么多
& & 22:53:17 +08:00
@ 允许的也应该说明原作者和出处,直接复制粘贴就是对别人不尊重。
& · & 711 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 19ms · UTC 18:52 · PVG 02:52 · LAX 11:52 · JFK 14:52? Do have faith in what you're doing.“二叉树可以解决什么问题”? - 知乎244被浏览<strong class="NumberBoard-itemValue" title="5分享邀请回答20925 条评论分享收藏感谢收起0添加评论分享收藏感谢收起二叉树建立里的scanf为啥不运行呢 ??
[问题点数:40分]
二叉树建立里的scanf为啥不运行呢 ??
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2018年4月 C/C++大版内专家分月排行榜第三2018年3月 C/C++大版内专家分月排行榜第三2018年2月 C/C++大版内专家分月排行榜第三2017年11月 C/C++大版内专家分月排行榜第三2017年10月 C/C++大版内专家分月排行榜第三2017年9月 C/C++大版内专家分月排行榜第三2017年6月 C/C++大版内专家分月排行榜第三2017年5月 C/C++大版内专家分月排行榜第三2017年4月 C/C++大版内专家分月排行榜第三2017年3月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|c语言二叉树错误,求大神指点!!_百度知道
c语言二叉树错误,求大神指点!!
#include &stdio.h&typedef struct tree{
struct tree *
struct tree *}BiTvoid CreateTree(BiTree **T){
scanf(&%c&,&temp);
if(temp==&#039; &#039;) *T=NULL;
*T=(BiTree *)malloc(s...
我有更好的答案
因为输入了c后面有两个空格 CreateTree(&(*T)-&lchild);CreateTree(&(*T)-&rchild);这两行就直接返回了。
空格表示的是空树啊,scanf(&%c&,&temp);if(temp==&#39; &#39;) *T=NULL;如果不输入空格这个树就一直创建下去了
我来给你推一下a b c加两个空格第一个树的值是a 左子树为NULL 右子树指向bb的左子树也为NULL 右子树指向c c的右子树和左子树都为NULL。就是这么回事了。
应该是这样的吧:创建第一个树,其值为a;
创建第a左子树,其值为b;
创建b左子树,其值为c;
创建c左子树,为空树,返回;
创建c右子树,为空树,返回;
创建b右子树,其值为d,返回;
创建d左子树,其值为e;
创建e左子树,为空树,返回;...以此可类推
那应该这样输入abc
de这后面5个空格 快结贴吧。
这不对啊,那问题出在哪里啊,这还没解决啊?
如果要像你那样输入的话 得把这两行换个位置CreateTree(&(*T)-&lchild);CreateTree(&(*T)-&rchild);
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请C++高手看一下为何程序运行时输入不了二叉树,代码哪里出现了问题_百度知道
请C++高手看一下为何程序运行时输入不了二叉树,代码哪里出现了问题
#include&iostream&
struct BTNode
//指向左子树的指针
//指向右子树的指针
static int clear(BTNode*bt)
//销毁一棵二叉树
if(bt)//根结点不...
我有更好的答案
static int create(BTNode *p,int k,int end)这个函数的问题 改为 static int create(BTNode *&p,int k,int end)
还是一样,没改变。
不好意思,看错了,不用改的你输出一下,看在哪里退出程序了
采纳率:48%
为您推荐:
其他类似问题
二叉树的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 二叉树结点染色问题 的文章

 

随机推荐