精华内容
下载资源
问答
  • 技术人求职指南》(二)如何写好简历

    千次阅读 多人点赞 2018-05-31 08:00:00
     今天我将分四个方面和大家谈谈如何写好简历: 首先 ,什么是简历; 其次 ,为什么要写好简历; 再次 ,简历的内容; 最后 ,五点建议。 1. 什么是简历  简历,通俗来说就是简明扼要的经历,也是突出自我亮点的...
        

    640?wx_fmt=gif

           前段时间有朋友问他投了简历为什么公司迟迟没有给他面试机会,还有朋友说他因为频繁跳槽在复试的时候被拒绝,但是他说他每次跳槽都是有进步的,不过我从他简历中只能看到频繁跳槽,并没有看到进步。这些问题都和所写的简历息息相关。

          在工作中,我曾筛选过近千封简历,面试过300名左右的求职者,也推荐过上百封简历。这个过程中,我发现一些求职者的简历确实有写得不尽如人意的地方,有的简历写得太简单缺少必要信息,而有的简历又写得太多没有突出重点。

          今天我将分四个方面和大家谈谈如何写好简历:

    首先,什么是简历;其次,为什么要写好简历;再次,简历的内容;最后,五点建议。

    1. 什么是简历

           简历,通俗来说就是简明扼要的经历,也是突出自我亮点的工作或学习经历。所以写简历要把握两个重点:一是展示你的亮点,二是让面试官快速找到你的亮点,从而引导他如何面试你。但是,需要注意的是:写简历不是写你全部的经历,不能像讲故事那样把自己经历过的事情全部写上去,那这个是自传就不是简历了,如果你把做过的项目和系统全部写上去,面试官时间有限,可能就看了一个你做的普通项目就不再看下去了,最终导致错过了面试官了解你亮点的机会。

    2. 为什么要写好简历

          我觉得写好简历至少有三个好处:一是更容易通过简历筛选关,这是整个面试的第一关;二是帮面试官节省大量筛选简历的时间,从而获得面试官的好感;三是为后面的面试做铺垫,能在面试时引导面试官进入你的技术领域提问。一般来说,通过简历,面试官即可大概了解你的能力和亮点,而好的简历能引导面试官朝着你擅长的领域提问,避免面试时把你带入了未知领域。因为技术人员不可能精通所有的技术点,如果面试官从你的简历中找不到亮点,那么面试官会问他觉得比较重要的知识点,这些知识点有可能恰好是你不擅长的而最终导致面试失败。

          另外,简历写得好坏不仅会反映出你的表述能力,还能反映你做事的态度,因为找工作这么重要的事情你如果连简历都不愿意认真写,那以后进入公司工作了做事可能也不会非常认真。

    面试的确是要靠运气,但好的简历产生的引导却能帮忙提升运气,所以一定要谨慎对待。

    3. 简历的内容

          简历主要包括6个部分的内容,分别是基本信息、应聘信息、自我介绍、教育背景、工作经验和项目经验

    基本信息

           必填项有姓名、手机号、常用邮箱、目前所在地和毕业时间。其中,常用邮箱用于通知你面试进展,或给你发送笔试题。目前所在地则关系到后续是进行电话、视频还是现场面试。选填项有博客地址或GitHub、英语读写听能力等。如果你写了博客地址或GitHub就一定是要有亮点的,其亮点表现为几个方面:经常写博客说明你有技术热情;博客写的知识点比较深入能体现你的技术深度;经常提交代码到GitHub,还做过开源项目的commiter,说明你喜欢编码、实战能力不错。但如果你的博客只是写了几篇简单的技术笔记,写了不仅不会加分还可能会减分。

    应聘信息

           应聘信息包括应聘的职位和期望工作地。应聘职位和期望工作地可以写多个。举个例子,腾飞应聘高级 Java 开发工程师/专家,期望工作地点上海或杭州。另外,应聘的职位和投递的职位要相符,比如对方招算法工程师,你的简历就应该写应聘算法工程师,而不应该写应聘其他职位。这些细节很重要。

    自我介绍

          自我介绍是用事实介绍自己的亮点和擅长技能,是简历中最重要的部分。自我介绍要用事实描述,而不要用观点描述。那么什么是事实,什么是观点呢?比如,“我有10年Java开发经验”,这个就是事实;而“我崇尚团队合作,学习能力强”,这个就是观点。事实是可以证明的,而观点很难,所以用事实描述会比用观点描述更有说服力。举个用事实描述的例子:

    腾飞有十年的Java开发经验,其中有两年的项目管理经验,三年的系统架构经验,带领过20人的团队支持公司营销业务线,负责部门核心平台架构优化和升级。腾飞有很好的技术热情,喜欢阅读源码,看过JDK框架包、并发包、Spring和Redis等框架的源码,爱好分享并经常发表技术文章,主导或参与了JarsLink开源项目。腾飞学习能力强,曾经在2周内完成iOS的学习,还开发了一个广告应用并上线。

    教育背景

          教育背景包括学历、毕业院校和毕业时间。面试官需要用毕业时间计算你的工作年限,不同的工作年限要求不一样。1~3年,要求扎实的基础能力和学习能力,通过这些能力来看你未来的潜力,BAT需要高潜力的学生。3~5年,还要看项目经验、技术深度和解决问题的能力。5~10年,技术能力基本定型,主要看重你的综合能力,包括沟通能力、技术深度、技术广度和架构能力。

    工作经验

          工作经验的内容包括公司名称、公司规模、公司类型、任职时间、职位、做的事情和取得的成绩,时间上应由近至远写起。其中,职位可以写软件开发工程师、高级开发工程师、架构师、技术主管和技术总监等;做的事情可以写负责某产品的架构升级,某系统的开发和设计工作等。举个例子:腾飞在某大型互联网公司任技术专家,负责过多个金融系统架构和建设,推动融资平台架构演进,组织过几十人的项目组完成双11大促支持,并获得业务方好评。 

    项目经验

          项目经验部分是用事实描述法写出你在这个项目中做的事情。由近至远写,但注意不要把所有项目经验都写上,主要是写亮点项目,或最能体现你技术能力的项目。举个例子:我在某项目中担任项目架构师和PM工作,负责该项目的架构,主系分和项目计划推进工作,推动5支团队60名人员开发完成该项目。我还在某项目中承担核心开发工作,负责用户管理模块的设计和开发工作,主要运用了Redis和分布式Session等技术。

             如何在简历中通过项目经验体现进步?假如你换了三次工作,在这三家公司的职位依次是工程师、高级工程师、技术主管或技术专家等,简历上就可以写“两年时间从开发工程师晋升为高级工程师和技术主管”,面试官从你这段经历就可以看出你一定很不错并很有潜力。 

    4. 五点建议

    简历的长度一到两页最合适。

          一般我推荐两页。若页数太多就要思考下简历是不是没有突出重点,是否按照前面说的只展示出自己最擅长的技艺。

    不要在简历中写之前的薪资和期望薪水

          写期望薪水有百害而无一利。首先,假如面试官发现你的期望薪水比他的还高,那面试官可能就会用更高的要求来面试你,或者由于这个职位给不到这么高的期望薪水,而导致起初简历筛选就没通过。其次,薪水的计算很复杂,期望薪水是税前还是税后呢?是否包含年终奖呢?是否包含其他个人所得奖金呢?所以我建议还是根据面试状况最后再谈期望薪水。

    不要频繁跳槽

          若求职者每年换一次工作,面试官就会认为他的职业规划想不清楚,并且忠诚度偏低,招进来后可能很快又会跳槽,技术积累也不够。其实,这样的简历在起初也很难通过筛选的。

    慎用精通这样的形容词

          形容技术能力可以用“使用、掌握、熟练和精通”,很多求职者的简历上写自己“精通Java”,其实一部分求职者只是用过JDK,连源码都没看过,这种仅仅停留在使用阶段,如果写了“精通”,那面试官肯定会问JDK源码和实现原理等问题,若回答不出来很可能会直接导致面试的失败。精通Java是件非常难的事情,但是Java里有很多小的知识点,比如垃圾回收、类加载、多线程和网络编程等,你可以选择某个知识点深入学习,在这些知识点上写“精通”,比如“精通类加载,并使用类加载技术开发了一个模块化框架”。

    找一个好的简历模板

          这能突出你做事情的专业度。建议简历排版简洁,用统一的字体,内容统一字体大小,每一段前面空两格,段与段之间空一行。


    总结

          最后我们总结下,找工作需要认认真真的写好简历,把它当做面试的第一关,简历要突出亮点,重点写自己的亮点技术和重点项目。

    (全文完)

    640?wx_fmt=jpeg



    展开全文
  • 然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说“天天业务代码还加班,如何才能成为技术大牛”,测试说“每天都有执行不...

    不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。


    然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说“天天写业务代码还加班,如何才能成为技术大牛”,测试说“每天都有执行不完的测试用例”,运维说“扛机器接网线敲shell命令,这不是我想要的运维人生”。。。。。。知乎上类似的问题“天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?”关注人数有6K+,答案有120+,当时我也回答了并且点赞数最多,后来做职业等级晋升面评和沟通的时候,又有了新的发现和想法,于是有了系统的整理一篇文章的想法,希望让更多同学在技术大牛的路上能够少走很多弯路。


    由于我是程序员,所以以下的一些例子都是基于程序开发的,但大道理是相通的,测试、运维都可以借鉴。


    几个典型的误区


    拜大牛为师

    知乎上有人认为想成为技术大牛最简单直接、快速有效的方式是“拜团队技术大牛为师”,让他们平时给你开小灶,给你分配一些有难度的任务。


    我个人是反对这种方法的,主要的原因有几个:

    1. 大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开1个小时的小灶;而且一个团队里面,如果大牛平时经常给你开小灶,难免会引起其他团队成员的疑惑,我个人认为如果团队里的大牛如果真正有心的话,多给团队培训是最好的。然而做过培训的都知道,准备一场培训是很耗费时间的,课件和材料至少2个小时(还不能是碎片时间),讲解1个小时,大牛们一个月做一次培训已经是很高频了。
    2. 因为第一个原因,所以一般要找大牛,都是带着问题去请教或者探讨。因为回答或者探讨问题无需太多的时间,更多的是靠经验和积累,这种情况下大牛们都是很乐意的,毕竟影响力是大牛的一个重要指标嘛。然而也要特别注意:如果经常问那些书本或者google能够很容易查到的知识,大牛们也会很不耐烦的,毕竟时间宝贵。经常有网友问我诸如“jvm的-Xmn参数如何配置”这类问题,我都是直接回答“请直接去google”,因为这样的问题实在是太多了,如果自己不去系统学习,每个都要问是非常浪费自己和别人的时间的。
    3. 大牛不多,不太可能每个团队都有技术大牛,只能说团队里面会有比你水平高的人,即使他每天给你开小灶,最终你也只能提升到他的水平;而如果是跨团队的技术大牛,由于工作安排和分配的原因,直接请教和辅导的机会是比较少的,单凭参加几次大牛的培训,是不太可能就成为技术大牛的。

    综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理,不要期望有个像武功师傅一样的大牛手把手一步一步的教你。适当的时候可以通过请教大牛或者和大牛探讨来提升自己,但大部分时间还是自己系统性、有针对性的提升。


    业务代码一样很牛逼


    知乎上有的回答认为写业务代码一样可以很牛逼,理由是业务代码一样可以有各种技巧,例如可以使用封装和抽象使得业务代码更具可扩展性,可以通过和产品多交流以便更好的理解和实现业务,日志记录好了问题定位效率可以提升10倍。。。。。。等等。


    业务代码一样有技术含量,这点是肯定的,业务代码中的技术是每个程序员的基础,但只是掌握了这些技巧,并不能成为技术大牛,就像游戏中升级打怪一样,开始打小怪,经验值很高,越到后面经验值越少,打小怪已经不能提升经验值了,这个时候就需要打一些更高级的怪,刷一些有挑战的副本了,没看到哪个游戏只要一直打小怪就能升到顶级的。成为技术大牛的路也是类似的,你要不断的提升自己的水平,然后面临更大的挑战,通过应对这些挑战从而使自己水平更上一级,然后如此往复,最终达到技术大牛甚至业界大牛的境界,写业务代码只是这个打怪升级路上的一个挑战而已,而且我认为是比较初级的一个挑战。


    所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。


    上班太忙没时间自己学习


    很多人认为自己没有成为技术大牛并不是自己不聪明,也不是自己不努力,而是中国的这个环境下,技术人员加班都太多了,导致自己没有额外的时间进行学习。


    这个理由有一定的客观性,毕竟和欧美相比,我们的加班确实要多一些,但这个因素只是一个需要克服的问题,并不是不可逾越的鸿沟,毕竟我们身边还是有那么多的大牛也是在中国这个环境成长起来的。


    我认为有几个误区导致了这种看法的形成:

    1)上班做的都是重复工作,要想提升必须自己额外去学习

    形成这个误区的主要原因还是在于认为“写业务代码是没有技术含量的”,而我现在上班就是写业务代码,所以我在工作中不能提升。


    2)学习需要大段的连续时间

    很多人以为要学习就要像学校上课一样,给你一整天时间来上课才算学习,而我们平时加班又比较多,周末累的只想睡懒觉,或者只想去看看电影打打游戏来放松,所以就没有时间学习了。

    正确的做法正好相反:

    首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;

    其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。我会在接下来的篇幅讲“如何在工作中学习提升”,至于如何利用时间碎片来学习,可以参考我的另外一篇文章《大牛养成指南(1):吃的草够多,你也能成为大牛


    正确的做法


    Do more

    做的更多,做的比你主管安排给你的任务更多


    我在HW的时候,负责一个版本的开发,这个版本的工作量大约是2000行左右,但是我除了做完这个功能,还将关联的功能全部掌握清楚了,代码(大约10000行)也全部看了一遍,做完这个版本后,我对这个版本相关的整套业务全部很熟悉了。经过一两次会议后,大家发现我对这块掌握最熟了,接下来就有趣了:产品讨论需求找我、测试有问题也找我、老大对外支撑也找我;后来,不是我负责的功能他们也找我,即使我当时不知道,我也会看代码或者找文档帮他们回答。。。。。。最后我就成了我这个系统的“专家”了。虽然这个时候我还是做业务的,还是写业务代码,但是我已经对整个业务都很熟悉了。


    以上只是一个简单的例子,其实就是想说:要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多


    怎么做得更多呢?可以从以下几个方面着手:

    1. 熟悉更多业务,不管是不是你负责的;熟悉更多代码,不管是不是你写的

    这样做有很多好处,举几个简单的例子:

    • 需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点
    • 问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理
    • 方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案

    2)熟悉端到端

    比如说你负责web后台开发,但实际上用户发起一个http请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、nginx等),服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等)这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的,但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。


    “系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但其实都是技术大牛的必备的素质,要达到这样的境界,必须去熟悉更多系统、业务、代码。


    3)自学

    一般在比较成熟的团队,由于框架或者组件已经进行了大量的封装,写业务代码所用到的技术确实也比较少,但我们要明白“唯一不变的只有变化”,框架有可能要改进,组件可能要替换,现有技术可能已经无法满足业务需求,或者你换了一家公司,新公司既没有组件也没有框架,要你从头开始来做。这些都是机会,也是挑战,而机会和挑战只会分配给有准备的人,所以这种情况下我们更加需要自学更多东西,因为真正等到要用的时候再来学已经没有时间了。


    以java为例,大部分业务代码就是if-else加个数据库操作,但我们完全可以自己学些更多java的知识,例如垃圾回收,调优,网络编程等,这些可能暂时没用,但真要用的时候,不是google一下就可以了,这个时候谁已经掌握了相关知识和技能,机会就是谁的。


    以垃圾回收为例,我自己平时就抽时间学习了这些知识,学了1年都没用上,但后来用上了几次,每次都解决了卡死的大问题,而有的同学,写了几年的java代码,对于stop-the-world是什么概念都不知道,更不用说去优化了。


    特别是很多开源软件,更加需要自己平时去自学,例如Nginx、Redis、Mongodb、ElasticSearch等,在合适的时机引入这些技术,能够带来很大的价值。


    Do better

    要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地方,都是更高级别的怪物,打完后能够增加更多的经验值。识别出这些地方,并且给出解决方案,然后向主管提出,一次不行两次,多提几次,只要有一次落地了,这就是你的机会。


    例如:

    重复代码太多,是否可以引入设计模式?

    系统性能一般,可否进行优化?

    目前是单机,如果做成双机是否更好?

    版本开发质量不高,是否引入高效的单元测试和集成测试方案?

    目前的系统太庞大,是否可以通过重构和解耦改为3个系统?

    阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?

    。。。。。。。。。。。。。。。。。。。


    只要你去想,其实总能发现可以改进的地方的;如果你觉得系统哪里都没有改进的地方,那就说明你的水平还不够,可以多学习相关技术,多看看业界其它公司怎么做,BAT都怎么做。


    我2013年调配到九游,刚开始接手了一个简单的后台系统,每天就是配合前台做数据增删改查,看起来完全没意思,是吧?如果只做这些确实没意思,但我们接手后做了很多事情:

    • 解耦,将一个后台拆分为2个后台,提升可扩展性和稳定性;
    • 双机,将单机改为双机系统,提高可靠性;
    • 优化,将原来一个耗时5小时的接口优化为耗时5分钟

    还有其它很多优化,后来我们这个组承担了更多的系统,后来这个小组5个人,负责了6个系统。


    Do exercise

    在做职业等级沟通的时候,发现有很多同学确实也在尝试Do more、Do better,但在执行的过程中,几乎每个人都遇到同一个问题:光看不用效果很差,怎么办


    例如:

    • 学习了jvm的垃圾回收,但是线上比较少出现FGC导致的卡顿问题,就算出现了,恢复业务也是第一位的,不太可能线上出现问题然后让每个同学都去练一下手,那怎么去实践这些jvm的知识和技能呢?
    • Netty我也看了,也了解了Reactor的原理,但是我不可能参与Netty开发,怎么去让自己真正掌握Reactor异步模式呢?
    • 看了《高性能MySQL》,但是线上的数据库都是DBA管理的,测试环境的数据库感觉又是随便配置的,我怎么去验证这些技术呢?
    • 框架封装了DAL层,数据库的访问我们都不需要操心,我们怎么去了解分库分表实现?

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


    诸如此类问题还有很多,我这里分享一下个人的经验,其实就是3个词:learning、trying、teaching!


    1)Learning

    这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如JVM原理、Java编程、网络编程,HTTP协议。。。。。。等等,这些基础技术不能只通过google或者博客学习,我的做法一般是先完整的看完一本书全面的了解,然后再通过google、视频、博客去有针对性的查找一些有疑问的地方,或者一些技巧。


    2)Trying

    这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:

    • Jvm垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种jvm启动参数,再运行的过程中使用jstack、jstat等命令查看jvm的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。

    • Reactor原理:自己真正去尝试写一个Reactor模式的Demo,不要以为这个很难,最简单的Reactor模式代码量(包括注释)不超过200行(可以参考Doug Lee的PPT)。自己写完后,再去看看netty怎么做,一对比理解就更加深刻了。

    • MySQL:既然有线上的配置可以参考,那可以直接让DBA将线上配置发给我们(注意去掉敏感信息),直接学习;然后自己搭建一个MySQL环境,用线上的配置启动;要知道很多同学用了很多年MySQL,但是连个简单的MySQL环境都搭不起来。

    • 框架封装了DAL层:可以自己用JDBC尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。

    • 用浏览器的工具查看HTTP缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的;也可以自己用Python写一个简单的HTTP服务器,模拟返回各种HTTP Headers来观察浏览器的反应。

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


    还有很多方法,这里就不一一列举,简单来说,就是要将学到的东西真正试试,才能理解更加深刻,印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand,而且“试试”其实可以比较简单,很多时候我们都可以自己动手做。


    当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复杂度不是我们写个模拟程序就能够模拟的,但这样的机会可遇不可求,大部分情况我们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。


    3)Teaching

    一般来说,经过Learning和Trying,能掌握70%左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。


    这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌握很全面了,但一写就发现很多点没考虑到;组内培训的时候也经常看到,有的同学写了PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚,或者有的点其实是理解错了。写PPT、讲PPT、讨论PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。


    后记

    成为技术大牛梦想虽然很美好,但是要付出很多,不管是Do more还是Do better还是Do exercise,都需要花费时间和精力,这个过程中可能很苦逼,也可能很枯燥,这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣



    注:本文首发InfoQ微信公众号:天天写「业务代码」,如何成为「技术大牛」?,同步CSDN博客

    展开全文
  • 正确的做法 Do more ...比如说你负责web后台开发,但实际上用户发起一个http请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、nginx等),服务器一般又会经过很多处理才到你的那部分...

    正确的做法

    Do more

    做的更多,做的比你主管安排给你的任务更多。

    要想有机会,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要做得更多!

    1、熟悉更多业务

    2、熟悉端到端

    比如说你负责web后台开发,但实际上用户发起一个http请求,要经过很多中间步骤才到你的服务器(例如浏览器缓存、DNS、nginx等),服务器一般又会经过很多处理才到你写的那部分代码(路由、权限等)这整个流程中的很多系统或者步骤,绝大部分人是不可能去参与写代码的,但掌握了这些知识对你的综合水平有很大作用,例如方案设计、线上故障处理这些更加有含金量的技术工作都需要综合技术水平。

    3、自学

     

    Do better

    你负责的系统和业务,总有不合理和可以改进的地方

    例如:

    重复代码太多,是否可以引入设计模式?

    系统性能一般,可否进行优化?

    目前是单机,如果做成双机是否更好?

    版本开发质量不高,是否引入高效的单元测试和集成测试方案?

    目前的系统太庞大,是否可以通过重构和解耦改为3个系统?

    阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?

     

    Do exercise

    动手能力很重要

    1)Learning

    这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,例如JVM原理、Java编程、网络编程,HTTP协议。。。。。。等等,这些基础技术不能只通过google或者博客学习,我的做法一般是先完整的看完一本书全面的了解,然后再通过google、视频、博客去有针对性的查找一些有疑问的地方,或者一些技巧。

    1. Trying

    这个步骤就是解答前面提到的很多同学的疑惑的关键点,形象来说就是“自己动手丰衣足食”,也就是自己去尝试搭建一些模拟环境,自己写一些测试程序。例如:

    • Jvm垃圾回收:可以自己写一个简单的测试程序,分配内存不释放,然后调整各种jvm启动参数,再运行的过程中使用jstack、jstat等命令查看jvm的堆内存分布和垃圾回收情况。这样的程序写起来很简单,简单一点的就几行,复杂一点的也就几十行。
    • Reactor原理:自己真正去尝试写一个Reactor模式的Demo,不要以为这个很难,最简单的Reactor模式代码量(包括注释)不超过200行(可以参考Doug Lee的PPT)。自己写完后,再去看看netty怎么做,一对比理解就更加深刻了。
    • MySQL:既然有线上的配置可以参考,那可以直接让DBA将线上配置发给我们(注意去掉敏感信息),直接学习;然后自己搭建一个MySQL环境,用线上的配置启动;要知道很多同学用了很多年MySQL,但是连个简单的MySQL环境都搭不起来。
    • 框架封装了DAL层:可以自己用JDBC尝试去写一个分库分表的简单实现,然后与框架的实现进行对比,看看差异在哪里。
    • 用浏览器的工具查看HTTP缓存实现,看看不同种类的网站,不同类型的资源,具体是如何控制缓存的;也可以自己用Python写一个简单的HTTP服务器,模拟返回各种HTTP Headers来观察浏览器的反应。

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    还有很多方法,这里就不一一列举,简单来说,就是要将学到的东西真正试试,才能理解更加深刻,印第安人有一句谚语:I hear and I forget. I see and I remember. I do and I understand,而且“试试”其实可以比较简单,很多时候我们都可以自己动手做。

    当然,如果能够在实际工作中使用,效果会更好,毕竟实际的线上环境和业务复杂度不是我们写个模拟程序就能够模拟的,但这样的机会可遇不可求,大部分情况我们还真的只能靠自己模拟,然后等到真正业务要用的时候,能够信手拈来。

    1. Teaching

    一般来说,经过Learning和Trying,能掌握70%左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚。因为在讲的时候,我们既需要将一个知识点系统化,也需要考虑各种细节,这会促使我们进一步思考和学习。同时,讲出来后看或者听的人可以有不同的理解,或者有新的补充,这相当于继续完善了整个知识技能体系。

    这样的例子很多,包括我自己写博客的时候经常遇到,本来我觉得自己已经掌握很全面了,但一写就发现很多点没考虑到;组内培训的时候也经常看到,有的同学写了PPT,但是讲的时候,大家一问,或者一讨论,就会发现很多点还没有讲清楚,或者有的点其实是理解错了。写PPT、讲PPT、讨论PPT,这个流程全部走一遍,基本上对一个知识点掌握就比较全面了。

    后记

    成为技术大牛梦想虽然很美好,但是要付出很多,不管是Do more还是Do better还是Do exercise,都需要花费时间和精力,这个过程中可能很苦逼,也可能很枯燥,这里我想特别强调一下:前面我讲的都是一些方法论的东西,但真正起决定作用的,其实还是我们对技术的热情和兴趣!

     

     

     

    https://zhuanlan.zhihu.com/p/22708863

     

     

     

    展开全文
  • 1. 明确报告的目的;2. 根据项目类型,及汇报... 点击打开链接 如何写好一份数据分析报告?(偏项目派) 2. 点击打开链接 数据分析报告指南(不错) 3. 点击打开链接 如何撰写你的第一份数据报告 (偏技术...

    1. 明确报告的目的;

    2. 根据项目类型,及汇报对象实施不同的报告方法;

    3. 报告基本框架,参考网上,有很多;

    4. 结合业务知识,提炼报告中重要的点,并逻辑清晰的表达;

    资料来源:

                1. 点击打开链接 如何写好一份数据分析报告?(偏项目派)

              2. 点击打开链接 数据分析报告指南(不错)

              3. 点击打开链接 如何撰写你的第一份数据报告 (偏技术派)



    展开全文
  • 基础过硬,技术岗面试最核心的还是考察「技术储备」,包括了语言基本功,操作系统、网络、体系结构、系统设计。 语言组织和表达能力,这点很重要,很多同学懂得某个知识点,却很难用简洁准确的语言表述出来。 想必...
  • 前言 众所周知,Android是一个基于Linux实现的操作系统。但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在...关于如何学习Android Framework开发知识,最近有幸在前阿里技术总监手
  • 最近读了一篇文章 大牛养成指南(3)- 天天业务代码,如何成为技术大牛? 下面是一些读书笔记和感想。 需要注意的几个观点: 成为技术大牛最主要还是靠自己,不是依赖别人。寄希望于大牛来带你是不切实际的 业务...
  • 前言 中秋国庆月,无酒无诗,无相见...以下给程序员的英文学习指南,每天看一遍。 名词 名词:用来表示人,事物,地点,时间,事件以及抽象概念等名称的词。 名词的分类:普通名词(可数名词:个体名词,集体名词,不
  • PAGE 9 Spring WebFlux入门指南 对Spring WebFlux 的响应能力感兴趣却不知道从何入手这里对其学习路线处理程序和请求进行了深入探讨 最近Spring Boot 2.0 的GA版本发布了所以我决定近期我的第一篇关于Spring 的...
  • 后来我和他聊了下,发现他技术确实好,在刷题期间,除了算法,他还把自己的 Android 笔记拿了出来,里面都是他平时的积累,内容全面,深度也有,有插件化、依赖注入,还有各种架构知识。 果然,只要技术好,走到哪里...
  • 终极内存技术指南

    2011-09-30 12:16:08
    嵌入式学习时,代码配置内存看不懂内存的数据手册,遍寻网络书籍不好找。 这个文档介绍了内存的一些概念、参数设置、工作原理 、时序等,理解了工作原理,那些参数如何设置就很简单了
  • 大学主学的软件技术专业,所以,进大学校门那一刻起,去上海bilibili工作就在心里埋下了种子。在学校,专业学的挺好的,自己过一些小项目,也参与过一些协会开发的项目。 两年前刚毕业时候,b站也有校招,我当然...
  • Beansmile如何写博客

    2018-09-21 00:50:32
    为降低彼此之间的沟通成本,并缩短技术管理者的审阅时间,故而下这篇官网投稿的相关指南。 1. 官网技术背景介绍 为了让新同事对官网有更进一步的了解,我觉得有必要简单地介绍一下官网背后的技术。 1) Refinery ...
  • 本书介绍如何在Linux下建立、运行并维护站点的综合技术,它适合于有一定的UNIX或Linux基本操作基础的网络建立者和维护者,同时也是广大Linux爱好者的一本较全面的参考书。本书从建站的准备工作开始,到建立功能...
  • 杨晓峰老师是资深Java工程师,也是极客时间《Java核心技术36讲》的专栏作者,他分享的内容有:\n\n如何准备一份「工程师范儿」的简历?\n如何在面试中体现代码能力\nFace to Face面试必考Java知识点\n大厂面试实例...
  • 如何购买腾讯云服务器(教程指南)

    万次阅读 2021-04-29 17:33:15
    ​由于需要帮公司客户(开发Web业务系统)选购腾讯云并做相关报价方案,所以业余时间了这份文档来帮助客户如何选择腾讯云相关服务器配置—腾讯云服务器购买指南 国内的云服务器上知名的就那么几家,腾讯云是排名...
  • 本书介绍如何在Linux下建立、运行并维护站点的综合技术,它适合于有一定的UNIX或Linux基本操作基础的网络建立者和维护者,同时也是广大Linux爱好者的一本较全面的参考书。本书从建站的准备工作开始,到建立功能...
  • Linux 网站建设 技术指南 本书介绍如何在Linux下建立、运行并维护站点的综合技术,它适合于有一定的UNIX或Linux基本操作基础的网络建立者和维护者,同时也是广大Linux爱好者的一本较全面的参考书。本书从建站的准备...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 598
精华内容 239
关键字:

技术指南如何写