自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构学而思

服务端架构学习与思考

  • 博客(62)
  • 收藏
  • 关注

原创 程序员,选择和努力哪个重要?

程序员,选择和努力哪个重要? 从年初到现在面试了近百人。面试中发现,有的同学还应该再努力些再换工作;而有的同学已经很努力了,做的很好,但没有选择好,去了不适合自己的公司。能力好,又选择了好公司好岗位的,还真是不多。如何才能选到好公司好岗位呢?到底选择和努力哪个更重要呢?选择这里说的选择,是说程序员如何选择一个好工作。要做到的是选择好行业、...

2019-05-26 13:14:00 401

原创 Leetcode 第137场周赛解题报告

Leetcode 第137场周赛解题报告 今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来。做了这些周,对leetcode比赛的题目也发现了一些「规律」。 一般前两道题都很「简单」,只要有想法,直接敲代码就能解出来。更多考察的是结果是否正确,速度其次。后两道题有些难度 ,不同场次难度不一样,也可能和不...

2019-05-19 20:26:00 181

原创 Leetcode 第137场周赛解题报告

今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来。做了这些周,对leetcode比赛的题目也发现了一些「规律」。 一般前两道题都很「简单」,只要有想法,直接敲代码就能解出来。更多考察的是结果是否正确,速度其次。后两道题有些难度 ,不同场次难度不一样,也可能和不同人的水平感受不同。但是肯定比前两道要难。一般在做后两道题的时候,只要复杂度是对...

2019-05-19 16:05:58 240

原创 Leetcode 第136场周赛解题报告

Leetcode 第136场周赛解题报告 周日的比赛的时候正在外面办事,没有参加。赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方。做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高。理论和实际是有关系的,一些题目也都有现实意义。计算机的一些模拟操作,通过数学算法,能够大大减轻代码量和算法复杂度。第一题是机器...

2019-05-14 22:11:00 116

原创 Leetcode 第136场周赛解题报告

周日的比赛的时候正在外面办事,没有参加。赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方。做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高。理论和实际是有关系的,一些题目也都有现实意义。计算机的一些模拟操作,通过数学算法,能够大大减轻代码量和算法复杂度。第一题是机器人在坐标系上直走和转弯,通过简单的模拟就能实现。但是仔细思考发现还能通过线性代数,...

2019-05-14 00:09:38 176

原创 Leetcode 第135场周赛解题报告

Leetcode 第135场周赛解题报告 这周比赛的题目很有特点。几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样。就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错。第四题还挺难想的,想了好久才想明白。这次先讲第四题,然后再讲其他的题目。下面是详细的题解和思考。比赛的地址 Weekly Cont...

2019-05-07 13:22:00 189

原创 Leetcode 第135场周赛解题报告

这周比赛的题目很有特点。几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样。就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错。第四题还挺难想的,想了好久才想明白。这次先讲第四题,然后再讲其他的题目。下面是详细的题解和思考。比赛的地址 Weekly Contest 135https://leetcode-cn.com/contest/w...

2019-05-06 16:14:52 127

原创 程序员如何当好面试者

程序员如何当好面试者 如何当好面试者经过对一些面试者的观察,如果有些方面做的更好一点,会大大增加面试的效率,提升通过面试的概率。希望即将参加面试的同学,能够从以下这些点得到帮助。明确的目标在参加面试之前,要先思考好面试的目的。为什么去面试?即将参加的这场面试,如果通过之后,是否满足你的要求。如果确定要去参加,要对面试的公司,面试的岗位做些功...

2019-05-06 10:08:00 121

原创 程序员如何当好面试官

程序员如何当好面试官 今年面试的人比较多,加起来快一百人了。由于面试任务比较多,也有越来越多的小伙伴加入了面试官的行列。总结一些面试相关的方法论,希望新晋面试官有些帮助,最终能高效面试。必备思维面试官的目标是为组织找到合适的人,一切行为都是围绕这个主体来运作的。我们现在的面试还是类似于考试,这是一种能够在短时间内高效选择到合格面试者的方法。...

2019-05-05 08:44:00 265

原创 如何当好面试者

如何当好面试者经过对一些面试者的观察,如果有些方面做的更好一点,会大大增加面试的效率,提升通过面试的概率。希望即将参加面试的同学,能够从以下这些点得到帮助。明确的目标在参加面试之前,要先思考好面试的目的。为什么去面试?即将参加的这场面试,如果通过之后,是否满足你的要求。如果确定要去参加,要对面试的公司,面试的岗位做些功课。知己知彼百战不殆。了解多一分,过的可能性就大一分。准备简...

2019-05-04 22:12:23 1027

原创 如何当好面试官

今年面试的人比较多,加起来快一百人了。由于面试任务比较多,也有越来越多的小伙伴加入了面试官的行列。总结一些面试相关的方法论,希望新晋面试官有些帮助,最终能高效面试。必备思维面试官的目标是为组织找到合适的人,一切行为都是围绕这个主体来运作的。我们现在的面试还是类似于考试,这是一种能够在短时间内高效选择到合格面试者的方法。存在误杀:和高考一样,面试不合格的人,也可能做好招聘岗位的工作...

2019-05-04 14:51:51 1855

原创 Leetcode 第133场周赛解题报告

Leetcode 第133场周赛解题报告 今天参加了leetcode的周赛,算法比赛,要求速度比较快。有思路就立马启动,不会纠结是否有更好的方法或代码可读性。只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了。比赛时先看的第二题,一看题就有了思路,直接用的广度优先搜索,写完提交正确。再一看有人都做了3道题了,应该是职业选手了,要多像他们看齐...

2019-04-21 21:21:00 135

原创 Leetcode 第133场周赛解题报告

今天参加了leetcode的周赛,算法比赛,要求速度比较快。有思路就立马启动,不会纠结是否有更好的方法或代码可读性。只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了。比赛时先看的第二题,一看题就有了思路,直接用的广度优先搜索,写完提交正确。再一看有人都做了3道题了,应该是职业选手了,要多像他们看齐。之后看第一题,发现直接用贪心就能做,写了个双重循环,一次过掉。第三题求最优连...

2019-04-21 02:30:11 240

原创 一些微信功能的观察与想法

微信这个国民级APP,有些产品特性还是很有特点的。把之前的发现记录一些,可以参考下背后的哲学和道理。PC版去掉帮忙删空格功能在之前的某个微信PC版本,热心地帮用户把消息前后的空格给删除掉。但是在后来的版本迭代中,又给去掉了。用户有时真的就要在消息前面发空格,帮用户删掉很热心,但用户可能也不买账。发现tab中可以删掉所有功能记得从前「朋友圈」和「玩一玩」是删不掉的,现在的版本是...

2019-04-16 02:22:16 353

原创 人人都要effective

人人都要effective最近发现,几本不同领域的书,看中文翻译后的书名也都没什么联系,但是英文书名都有一个词——effective。公司也在倡导高效会议、提高工作效率。原来我们一直在学习的内容,和追求的目标,用一个单词符号就可以概括——effective。《高效能人士的七个习惯-The 7 Habits of Highly Effective People》曾经有一位老大哥...

2019-04-15 01:56:09 119

原创 如何高效工作——团队篇

如何高效工作——团队篇 前面两篇文章讲了个人篇如何高效工作。通过学习硬件篇和软件篇的方法,可以达到个人高效。但软件开发是一个团队合作的工作。涉及到产品经理,开发,运维等多种角色合作。需要整个团队整体配合,执行一致,才能达到高效工作。就像一个足球队,只有一名队员技术强,甚至每个球员技术强,都是不够的,还需要各个角色配合好才能取得成绩。要团队整体高效...

2019-03-01 13:10:00 1286

原创 90%的程序员都犯过的代码错误

最近参加了多次的代码review会,在review的过程中,发现有些问题几乎每次都出现。挑了几个比较典型的问题讲解下。这几个问题都是初级问题,解决方法都很容易。只要掌握了方法,有意识避免,能让短时间内迅速提高代码质量。真所谓投入小,见效快。变量命名不清晰,一词多义为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事务。容易阅读,不会与其他事务混淆。例如:if(staf...

2019-02-23 17:41:43 135

原创 找到bug的根源,问五次为什么

在学习《问题分析与解决》时学到了一种找到问题根源的方法——问五次为什么。具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题。最近在复盘bug的时候,也使用了这种方法,屡试不爽。案例前端发布后,页面按钮点击失效,用户反馈问题,前端回滚代码后恢复。问题一、为什么按钮点击会失效?因为前端代码写出了一个bug,没有对空对象进行判空,导致页面js...

2019-02-23 17:40:40 254

原创 程序员如何高效工作——个人软件篇

在上一篇《如何高效工作——个人硬件篇》介绍了硬件层面提高的方法。即通过加快操作熟练性,升级办公用具的方法,提高工作执行速度。本质工作的流程和步骤不变,但是执行时间缩短。今天说的软件篇,里面介绍的方法,是优化工作执行的方式,让事情的解决效率,有指数级的提升。就像你用快速排序和用冒泡排序相比,优化了算法复杂度,排序速度有量级的提升。具体到各行各业的工作,有很多和工作内容相关联的方法。在此提一些通用的...

2019-02-23 17:24:13 252

原创 如何高效工作——个人软件篇

在上一篇《如何高效工作——个人硬件篇》介绍了硬件层面提高的方法。即通过加快操作熟练性,升级办公用具的方法,提高工作执行速度。本质工作的流程和步骤不变,但是执行时间缩短。今天说的软件篇,里面介绍的方法,是优化工作执行的方式,让事情的解决效率,有指数级的提升。就像你用快速排序和用冒泡排序相比,优化了算法复杂度,排序速度有量级的提升。具体到各行各业的工作,有很多和工作内容相关联的方法。在此提...

2019-02-23 02:43:01 426

原创 如何高效工作——个人硬件篇

前言如何高效工作?对于每个想在工作中取得成就的人来说,都会问自己这个问题。之前公司也讨论过这个话题,觉得还是很重要的。这里介绍一些方法,希望能够对大家的高效工作有些帮助。主要分为两部分,个人和团队。涉及到三篇文章。个人——硬件篇、个人——软件篇、团队篇。要高效,我们要先从个人做起,把自身的效率提高,达到局部效率最大化。但是现在的工作都是团队,一个人强不行,还要整体强,都像一个目标出...

2019-02-13 22:50:30 263

原创 程序员如何高效工作——个人硬件篇

程序员如何高效工作——个人硬件篇前言如何高效工作?对于每个想在工作中取得成就的人来说,都会问自己这个问题。之前公司也讨论过这个话题,觉得还是很重要的。这里介绍一些方法,希望能够对大家的高效工作有些帮助。主要分为两部分,个人和团队。涉及到三篇文章。个人——硬件篇、个人——软件篇、团队篇。要高效,我们要先从个人做起,把自身的效率提高,达到局部效率最大化。但是现在的工作都是团队,一个人强不行...

2019-02-13 18:14:00 647

原创 程序员如何科学地记日志

无论是哪种程序员,日常开发中都离不开记日志。但是通过最近的review会,发现很多程序员在记日志的时候,还是会有些问题。那么如何科学地记录日志呢?为什么要记日志在寻求方法前,我们先看看我们记日志的目标。日志是程序运行时的x光,能够追踪到程序运行的状态,通过日志,程序员能够加速调试速度,还原异常情况出现的场景。也有通过日志记录处理数据,方便后面统计和审计。还有通过日志进行备份,当数据有...

2019-01-30 22:00:29 388

原创 找到bug的根源,问五次为什么

找到bug的根源,问五次为什么在学习《问题分析与解决》时学到了一种找到问题根源的方法——问五次为什么。具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题。最近在复盘bug的时候,也使用了这种方法,屡试不爽。案例前端发布后,页面按钮点击失效,用户反馈问题,前端回滚代码后恢复。问题一、为什么按钮点击会失效?因为前端代码写出了一个bu...

2019-01-25 22:04:00 445

原创 找到bug的根源,问五次为什么

在学习《问题分析与解决》时学到了一种找到问题根源的方法——问五次为什么。具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题。最近在复盘bug的时候,也使用了这种方法,屡试不爽。案例前端发布后,页面按钮点击失效,用户反馈问题,前端回滚代码后恢复。问题一、为什么按钮点击会失效?因为前端代码写出了一个bug,没有对空对象进行判空,导...

2019-01-25 03:49:21 166

原创 90%的程序员都犯过的代码错误

90%的程序员都犯过的代码错误 最近参加了多次的代码review会,在review的过程中,发现有些问题几乎每次都出现。挑了几个比较典型的问题讲解下。这几个问题都是初级问题,解决方法都很容易。只要掌握了方法,有意识避免,能让短时间内迅速提高代码质量。真所谓投入小,见效快。变量命名不清晰,一词多义为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事务。容易阅读,...

2019-01-23 12:59:00 524

原创 90%的程序员都犯过的代码错误

最近参加了多次的代码review会,在review的过程中,发现有些问题几乎每次都出现。挑了几个比较典型的问题讲解下。这几个问题都是初级问题,解决方法都很容易。只要掌握了方法,有意识避免,能让短时间内迅速提高代码质量。真所谓投入小,见效快。变量命名不清晰,一词多义为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事务。容易阅读,不会与其他事务混淆。例如:if...

2019-01-23 05:32:56 145

原创 如何做到要事优先

人的精力、时间是有限的,在有限的资源下,如何能作出巨大的贡献,甚至是无限的贡献呢?就是要做重要的事,优先做重要的事。如何做到要事优先,尽可能产出更大的成果呢?一、摆脱过去1. 不要躺在过去的功劳簿上成功要依靠天时地利人和,还需要一点点运气。但是成功的人,大部分都认为是自己的努力,不愿意承认和运气有关。很多成功过的人,都会把过去的实践当成真理。因为我用这招成功过啊。但是有没有想过,...

2018-12-23 02:47:50 1486

原创 程序员如何描述清楚线上bug

案例一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id。原因是修改了一个返回操作人姓名的函数,返回了操作人的id。但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员的id。该bug污染了一条修改记录,操作员手动删除就好了。回滚代码后恢复。本质是修改了函数的返回值,却没有查看所有调用的地方。这个函数的名字叫getinfo,但是在代码的其他模块中也有同...

2018-12-16 22:50:25 228

原创 程序员如何描述清楚线上bug

程序员如何描述清楚线上bug案例一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id。原因是修改了一个返回操作人姓名的函数,返回了操作人的id。但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员的id。该bug污染了一条修改记录,操作员手动删除就好了。回滚代码后恢复。本质是修改了函数的返回值,却没有查看所有调用的地方。这个函数的名字叫getinfo,但是...

2018-12-16 20:03:00 161

原创 程序员如何讲清楚技术方案

转载请注明来源:程序员如何讲清楚技术方案本文链接地址:https://www.owenzhang.net/blog/201.html 公众号二维码:  最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。具体表现是:上来不说需求,直接说算法实现。台下一头雾水,根本不知道设计方案是否合理。 描述完需求后,又直接看代码,看表结构,...

2018-12-07 20:31:41 1617

原创 程序员如何讲清楚技术方案

程序员如何讲清楚技术方案最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。具体表现是:– 上来不说需求,直接说算法实现。台下一头雾水,根本不知道设计方案是否合理。– 描述完需求后,又直接看代码,看表结构,没有交代流程。– 比较简单的算法,描述的特别绕,让人听不懂。被别人指出后,觉得这东西这么简单,你们为什么听不懂,还很委屈。– 直接说术...

2018-12-05 18:58:35 315

原创 程序员如何处理好时区问题

写国际化的程序,经常会遇到两种问题:字符编码、时间问题。今天我们就聊聊程序中如何处理时间问题。首先,要了解一些基本的概念,只有对概念有清晰的掌握,才能明白解决方法。基本概念GMT时间:格林尼治标准时间(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。由于地球每天的自转是有些不规则的...

2018-11-25 07:13:35 213

原创 如何设计「前后端交互协议」

客户端和服务器交互,web页面和后端交互,都需要设计前后端交互协议。究竟怎么样设计最好,是否有些方法论呢?有的。方法很简单:前端侧重展示,后端侧重逻辑;轻前端,重后端。理由如下:安全性无论是客户端,还是web页面,在黑客面前,都是可以修改逻辑的。所以重要的逻辑,都是要做在后端,即使是游戏为了性能和体验,在后端也要做校验逻辑。逻辑在后端是省不掉的,至于前端,能省则省。不用相同的逻...

2018-11-13 03:17:03 1558

原创 代码中的奥卡姆剃刀原理

如无必要,勿增实体。 过早的优化是万恶之源。背景一个抽奖活动,要求在展示奖品股票时,显示股票价格。开发在实现这个功能的时候,用redis缓存每只股票的价格,每两小时调用行情服务更新一次。问为什么要做个缓存,而不是直接访问行情服务直接读取,给出了几个理由:减少对行情的请求,直接访问redis一次就能查很多。用缓存速度快。奖品展示、获奖排行榜都要用行情数据,防止不一...

2018-11-07 12:28:11 172

原创 毕业生如何准备技术类面试

毕业生如何准备技术类面试 又到了一年一度的校园招聘时间,最近面试了上百个毕业生,发现很多学生没有准备好面试,也不会面试。毕业生究竟如何准备校园招聘呢?写些建议,希望能够对毕业生有所帮助。了解自己的需求。自己的兴趣是什么,擅长什么技术,对自己有个清晰的认识。到底适合什么公司,什么岗位,有目标的准备面试,会节约时间,提升通过率。了解公司的需求。通过师兄师姐,网上搜集,对心仪的...

2018-10-27 17:12:00 194

原创 毕业生如何准备技术类面试

又到了一年一度的校园招聘时间,最近面试了上百个毕业生,发现很多学生没有准备好面试,也不会面试。毕业生究竟如何准备校园招聘呢?写些建议,希望能够对毕业生有所帮助。了解自己的需求。自己的兴趣是什么,擅长什么技术,对自己有个清晰的认识。到底适合什么公司,什么岗位,有目标的准备面试,会节约时间,提升通过率。了解公司的需求。通过师兄师姐,网上搜集,对心仪的公司有一定的了解。衡量下公司是否...

2018-10-27 03:57:15 96

原创 我能贡献什么-《卓有成效的管理者》第3章

第三章 我能贡献什么有效的管理者注重贡献,并懂的将自己的工作与长远目标结合起来,强调责任。重视贡献是有效性的关键。有效性包括:1. 自己的工作,包括工作内容、工作水准及其影响;2. 自己与他人的关系,包括上司、对同事和下属;3. 各项管理手段的运用,例如会议或报告等。但大多数人只重视勤奋,忽略成果。一个重视贡献的人,注意对成果负责的人,才算是管理人员,因为对整个机构的经营绩...

2018-10-18 04:36:21 1512

原创 从零开始跑——《爱上跑步的十三周》

《爱上跑步十三周》是一本很适合初级跑者的入门书。通过这本书,能够养成跑步的习惯,了解跑步的初级常识,最终能够跑到10公里。按照书中的介绍,完成了13周的训练,亲测有效。如果想养成了跑步的习惯,对跑步这项运动也有兴趣,那么入门跑步就读这本书吧。为什么跑步书中列举了很多跑步的原因,总体跑步的原因有两种:身体健康、提升毅力。身体健康 锻炼身体的人血管中瘀块较少,心脏病发作和中风...

2018-09-22 15:05:15 260

原创 你的能力超乎你想象

上周去华科校招,宣讲会结束后笔试,几名同学直接背书包走了。以为对公司的宣讲有什么意见。但原因是几名同学是电子学院的,只学过C语言,没学过C++,看到我们招的是C和C++方向,认为不满足主动放弃了。而且说只找C语言的工作,不考虑其他的语言。只是语言的原因,就固步自封,着实可惜。大公司校招,考察的是基础知识和对问题的解决思考能力。笔试、面试题都是针对基础来考察的。只要在校有认真学习,就能顺...

2018-09-20 03:35:32 462

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除