作者: | 来源:互联网 | 2024-10-11 18:40
第一件事情是学会二分查找
第一件事情是学会二分查找。我看过很多刚入门的程序员,要么是自学编程的,没有系统地学过算法,连二分查找都不知道;要么是本科念完,算法都还给老师了,总之就没有这样一种基础意识。看他们定位问题,从第一行代码开始加断点或者是打印上下文信息,我会有一种强烈的冲动:还是让我来吧。
eg:
如果你有一段代码,例如说一个函数,或者多个互相调用的函数,最终结果不是你想要的,你不要从头开始找哪里出错了。你应该找一个中间点,从那里开始二分查找。你在中间点查一个断点,或者是把上下文信息打印出来,以此确定程序执行到中间点时的状态是不是还是符合你预期的。如果符合你预期,问题处在中间点之后;如果已经不符合你预期了,问题出在中间点之前。如此重复,直到你能定位问题出在哪里。
如果你能定位到问题出在哪里了,要么是显而易见的逻辑错误,你自己把写错的逻辑纠正过来就好了;要么是更底层的问题,你觉得你的逻辑是没错的,但底层的运行时、框架、浏览器、操作系统之类的就是不按照你预期的方式进行处理。这时候你只能通过搜索去学习,为什么你依赖的底层没按照你的预期进行处理。你的预期有可能是对的,底层出错了,你要想办法绕过去;你的预期也有可能是错的,因为你没有真正理解你依赖的底层,这时候你要继续学习新知识,调整你对底层的理解,然后修正你的代码逻辑。
关键字搜索
遇到这种问题时,你应该用什么关键字搜索呢?这是个很难教的东西,因为是否能抓准关键字来搜索是非常依赖于眼界和经验的。这种状况我在教新手编程时遇到过,在教非常有经验的程序员上手新公司技术时也遇到过。
教一个新手编程
教一个新手编程:我跟他说,你遇到这个问题,你自己搜索一下。他尝试用他能想象得到的关键字搜索了一番,就是找不到答案。我来一搜,答案就在 StackOverflow 上,或者这个开源项目已经有人提了个 Issue。为什么他搜不到呢?原来某些更复杂的技术概念他还没学到,我直觉能想到用什么关键字,但他根本意识不到那些关键字的存在。
教一个有经验的程序员:
教一个非常有经验的程序员上手新公司的技术:我跟他说,遇到这个问题你搜一下公司内网吧,我们的内部搜索系统非常强大的,Wiki、文档、讨论……什么都能覆盖到。他怎么都搜索不出来,但换我来一下子就搜到了。为什么他搜索不到呢?因为公司内某些系统、术语、代号他还从来都没听说过,而我一下子就能想到,于是我能搜索到。
这种眼界和经验是没办法系统化、一次性地教给一个新人的。就算你尝试一次性地把很多知识传授给一个新人,他也无法全部都记下来。所以最好的学习方法是不断地通过覆盘来学习——我遇到了这样一个问题,我尝试了如下的操作,没有解决好问题,或者解决了但效率很差,那比我厉害的人遇到同样的问题是如何解决的?他们如何使用不同的操作更高效地解决同样的问题?我能从中学到什么?让我重来一次的话我会怎么做?
这时候自然引申出来的一个问题是:去哪里认识这些比自己厉害的人?如何能获得他们的帮助和指导?这有付费和免费两个途径。
付费的话,例如说知乎的付费咨询啦。(知乎的产品和运维,如果我这个答案帮助你们提高业务指标了,记得多收录我其它答案啊!)有不少人都在尝试付费咨询这样一件事情,这个行业在中国还很不成熟,但如果你付得起的话可以试一下。我做一对一的 career coaching,收费是 300 美元一小时(5 美元一分钟的费率),有需要的可以私信联系我。
说完付费的再说一下免费的,这里面最重要的一点是跟比你厉害的人建立关系,让对方意识到你也在为他在乎的领域创造价值。以下是我提供的一个简单的步骤:
- 去关注比你厉害的人,看看他平时发布的内容都在说什么,了解他最在乎的领域是什么。
- 在他发布的内容下面参与互动,发表你对于他的领域的见解,最重要的是你的见解要能在他已有的内容之外创造新的价值。
- 在跟他有持续互动之后,他可能会主动想要认识你,否则的话你也可以主动私信他,提出说你想认识一下他。如果是你主动的话,你最好带上一个有价值的话题,以此展开私信对话。
我可以给你一个非常具体的例子,当年跟我聊上一位大佬,他私信我的第一句话是「鼓起勇气不要脸一波,可以给我这个回答送个专业吗?」我觉得他写的答案质量都不错啊,确实在为刷题的留学生提供了价值,于是我毫不犹豫地帮他的答案点了个专业。
在你跟一个比你厉害的人建立关系后,给点耐心多聊聊,在你有需要是别人往往是愿意帮助你的。
文章到此就结束了
来自小编的福利
今天的技术分享就到这里了,给大家推荐一本书 Java并发编程艺术 需要的小伙伴 可以 点我 点我 免费领取 哦,还有一些小编整理的Java核心知识点资料整理分享给到你们哦 !
喜欢小编的文章可以点赞三连哦,还可以白嫖资料呢