近日一好友去阿里面试,面试失败了,分享了一个他最不擅长的算法面试题。题目是这样的。
题目:给定一个二叉搜索树(BST),找到树中第 K 小的节点。
出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家
参考答案:
- 基础数据结构的理解和编码能力
- 递归使用
30岁之前:如何打好基础
我建议你做两件事。
第一件,找准一个可以为之奋斗5年、 10年甚至更久的目标。
这是一种最理想的状态。
因为一个清晰的目标,可以让你的职业成长围绕着一个点去积累经验,而这种日积月累的经验积累,也是你日后升职加薪的筹码。虽然经验并不一定与能力相关,但如果没有经验的积累,你的能力也基本没有提升的可能。
书中有这样一个故事:
马克西姆·文格罗夫出生在西伯利亚,4岁的时候,他接触到了第一把小提琴,展现出了过人的天赋。
并且,他的天赋和敬业度是成正比的。他每天练习7小时,5岁就举办了独奏会,15岁就获得了国际大奖,34岁就成了世界顶级小提琴家。
文格罗夫说:“我母亲每天晚上8点回到家,吃完晚饭之后就教我小提琴直到凌晨4点。对于一个4岁的小孩来说,这简直就是酷刑,但两年后我变成了小提琴手。”
很多人在抱怨没有机会。其实并非如此。
肯特大学的社会学教授弗兰克·弗雷迪认为,有效投入很多时间去练习的人自然会拥有自己的运气:“他们近乎苛求地努力,当运气来的时候,他们早就准备好了。”
如果你没有遇到机会,不要抱怨,首先要反思:自己到底哪些方面准备不足?
这里可以给广大的Android开发三条建议:
1、多看源码
2、多造轮子,多实战应用
3、多研究原理
由于篇幅原因就先不展开长