谈谈程序猿的三观

1.人的三观

老三观即传统意义上面的三观,即是平时网络上使用的毁三观,三观不正的说法的三观,主要包括世界观,人生观,价值观。
世界观

世界观,也叫宇宙观,是哲学的朴素形态。世界观是人们对整个世界的总的看法和根本观点。由于人们的社会地位不同,观察问题的角度不同,形成不同的世界观。也叫宇宙观。哲学是其理论表现形式。世界观的基本问题是精神和物质、思维和存在的关系问题,根据对这两者关系的不同回答,划分为两种根本对立的世界观基本类型,即唯心主义世界观和唯物主义世界观。
人生观

人生观是指对人生的看法,也就是对于人类生存的目的、价值和意义的看法。人生观是由世界观决定的。人生观是一定社会或阶级的意识形态,是一定社会历史条件和社会关系的产物。人生观的形成是在人们实际生活过程中逐步产生和发展起来的,受人们世界观的制约。不同社会或阶级的人们有着不同的人生观。
价值观

价值观是指人们在认识各种具体事物的价值的基础上,形成的对事物价值的总的看法和根本观点。一方面表现为价值取向、价值追求,凝结为一定的价值目标;另一方面表现为价值尺度和准则,成为人们判断价值事物有无价值及价值大小的评价标准。一个人的价值观一旦确立,便具有相对稳定性。但就社会和群体而言 ,由于人员更替和环境的变化,社会或群体的价值观念又是不断变化着的。传统价值观念会不断地受到新价值观的挑战。对诸事物的看法和评价在心目中的主次、轻重的排列次序,构成了价值观体系。价值观和价值观体系是决定人的行为的心理基础
2. 宗教三观
空观

又云从假入空观。空是离性离相义。观一念之心,不在内、不在外、不在中间,称为空;由观一念空故而一空一切空,无假无中而不空;此因空、假、中三观能荡除三惑,以空观荡除见思,以假观荡除尘沙,以中观荡除无明,即毕竟空为空观。换言之:自世俗常识(假)进入宗教认识真理(空)为空观。
假观

又云从空入假观。假是无法不备义。观一念心具足一切诸法称为假;即由观一念假,而一假一切假,无空无中而不假;此因空、假、中三观皆能立法,以空观立真谛法,以假观立俗谛法,以中观立中谛法,三法皆立为妙假观。换言之,不留滞于空而进入佛智遍照之世俗境界为假观。
中观

又云中道第一义谛观。中即中正、泯绝二边之对待。观一念心,非空非假,即空即假,称为中;由观一念中而一中一切中,无空无假而不中;此空、假、中三观皆能泯绝对待,言空则空外无法,言假则假外无法,言中则中外无法,三者皆绝待为圆中观。简言之,不执空观、不执假观,以空假圆融之大悲菩萨行,为中道观。
3.程序猿的三观
代码观?
加班观?
薪水观?

你觉得呢?

我所理解的人生的意义

生命的意义

不论生在哪里/都要努力绽放/不为别人能够看到/只为自己曾经活过/哪怕是一朵野菊花/也要开出自己的美丽。“格物、致知、诚意、正心、修身、齐家、治国、平天下”正是生根、发芽、开花、结果的人生轨迹。

格物致知:通过研究事物弄明白事物的运行规律,提高认知水平;

诚意:动机纯粹,建立起为他人创造价值的初心使命;

正心:不受外界各种诱惑、各种干扰的影响,不忘初心,牢记使命;

修身:承前启后,前面是内圣,后面是外王;

齐家、治国、平天下:在某个领域、某个行业做成事情,为社会为他人创造价值,成人达己。

“格物致知、诚意正心”是修身的方法,修身了就做到内圣了,但内圣不是终点,学问的意义不在于懂得了道理因而能够解释世界,而在于拿这种道理去能动地改造世界,因此“齐家、治国、平天下”才是内圣的归宿,内圣只是外王的前提。

格物致知

一个挑粪工有机会进到了金碧辉煌的宫殿里挑粪,心里萌生了一个梦想,“等我有了钱,一定制作一副金扁担,羡慕死其他挑粪工,全城的粪都让我挑”。

项羽看到秦始皇仪仗想到“彼可取而代之”,刘邦想到“大丈夫当如此”,陈胜想到“王侯将相宁有种乎?”。

20年前我有机会认识了一位小有成绩的生意人,他说“遍地是黄金,就看你会捡不会捡”。

人与人的区别如此之大,首在认知不同。认知不到,黄金、机会摆在面前也不会认得;认知到了,处处是黄金,处处是机会。

要改变人首先改变思想认知,然后才是行为,最后才是结果。教育的目的就是提升学生的认知水平,提升认知水平的方法,西方叫“建构主义”,中国叫“格物致知”,理念一模一样。

都反对单向灌输,反对把语言文字作为获取知识的捷径,“纸上得来终觉浅,绝知此事要躬行”,老师应该创设学习情境,帮助学生在与情境中的人、事、物相互作用的过程中主动建构知识,“人在事中磨”。

格:观察、实验、制作、参与;

物:包含事和物,物又包含自然物和人造物;

致:研究总结归纳;

知:对事物规律性的认识,分成记住、理解、应用和创新四个层次。

“格”是研究方法,“物”是研究对象,“致”是抽象能力,“知”是研究结果。不同的人用同样的方法做同样的事情,结果可能千差万别,关键就在于“致”的能力不同。

“致”这种抽象能力受限于三个方面,第一是已有的认知能力,第二是思维能力(主要包含分析、归纳、综合和演绎等),第三是品格(主要包含认真努力、抗挫、交流合作等)。

因此,逐步提高认知能力、思维能力和塑造品格是达到教育目的的具体途径。

巴贝奇机器人以“格物致知”教育理念为指导,设计了“学、做、思、用”教学方法。

“学”:观察自然物和人造物,激发求知欲,确定研究对象;
“做”:用各种零件制作模型并编写程序还原事物运行过程;
“思”:对看到的现象和得到的数据进行分析、归纳,总结出来自己的认识;
“用”:综合应用得出的认识解决实际问题,并把这种认识演绎推理到不同类事物上,达到举一反三,融会贯通。

总结一下,教育的目的是提高认知水平,提高认知水平的方法是格物致知,格物致知需要一定的知识储备、思维能力和优良品格,这三项细化才是教学成功与否的考核指标。

诚意

意是动机、想要的意思,诚是真实、纯粹的意思,合一起就是动机纯粹、始终如一,诚意可以理解为初心,到底想要什么?巴贝奇机器人的初心就是“通过制作机器人,学习知识、锻炼思维能力、塑造优良品格,提升认知水平”。

一切事情都始于一个念想,有了念想才会有后面的计划和行动,所带来的就是得失成败、酸甜苦辣。万事皆从心起,哀莫大于心死,心死事情即停;乐莫过于希望,希望之于事情如同势能之于流水,挡不住的水向低处流,挡不住的心向希望而去。初心愿望纯粹而强烈,日思夜想,这种愿望就会渗入潜意识,即使睡眠中潜意识也在工作,这个时候想要的东西的线索就会不断在身边出现。比如想要解决某个问题,日思夜想,不论是看书、上网、听别人聊天、听广播无时无处不在寻找解决办法,这时候原本没注意的东西就能看到了,灵感也就自然会出现,问题将迎刃而解。

事始于心,终于心。

正心

虽然“诚意”后有了初心,有了最原始的动力,但你我皆凡人,难免会受到各种诱惑、各种干扰的影响,为了不让内心粘上灰尘,就要经常擦拭内心,使其纯粹如一,擦拭内心就是正心。

第一条是常思利他,到底能给别人带来什么好处,利他才能得到信任,而信任就能获得支持,获得支持事情才能不断向前推进,利他与利己是作用力与反作用力的关系。

第二条是自律。
戒贪心,7分满意就好;
戒怒,发怒容易失去理智;
戒嫉妒,为别人的成功喝彩;
戒骄,骄傲自满必失败;
戒疑,疑神疑鬼必离心;
戒成见,有了成见怎么看都不顺眼。

第三条是精进。每一天都要为初心希望付出努力,量变终将带来质变,不走捷径就是捷径。
第四条是忍耐。有足够的耐心去等待结果的出现,不达目的誓不罢休。
第五条是静心。经常静下心来想一想,想好了再走。
第六条是智慧。有足够的智慧去判断是坚持的不够还是方向搞错了。
经过这么六条来正心,心就能与初心的方向保持一致,不断接近初心。
经过格物、致知、诚意、正心后就达到修身了,后面再去齐家。

齐家

古代建功立业无非是当官打仗,都需要管理,而管理的最小单位就是家,古时候的家人数众多,齐家确实可以锻炼出来管理能力,可是现在一家2口、3口、4口很多,齐家已经不能够锻炼出来很好的管理能力了。商品经济时代,齐家能力可以从小公司的经营、管理中得到磨练。

我现在理解的经营包含3个重要方面。

第一条是符合时代发展趋势、满足市场需要,“己所欲施于人”是错的,“己所不欲勿施于人”也是错的,“施人所欲”才是对的。

第二条是差异化,同类产品摆在一起给顾客一个买你的产品的理由,把创造创新作为发展的内在动力,而创新也是要符合第一条的。

第三条是让顾客知道你的存在,选择适合自己发展的模式,能够最大可能的接触到顾客,通过接触顾客播种理念,后期持续浇水、施肥,不断取得顾客的信任,最后的成交将是水到渠成的。

产品有人需要,产品又有卖点,需要的人又能知道你的存在并信任你,成交就是自然而然。

我所理解的管理也包含三个方面。

第一条是给人以希望。一群人若无希望之事则就是在混吃等死,有希望、有具体目标,并且希望目标人人皆知,思想上行动上统一。希望之于群体如同电压之于导体,导体中的自由电子都带电,但方向散乱,对外没有作用,只有施加电压后,电子才会统一方向形成电流并对外产生作用。

第二条是物质利益。衣食住行谁也离不了,不给钱光谈理想那是传销,是骗子。企业应光明正大地追求利润,但利润不是压榨员工和欺骗顾客得来,而是上下一心创造有价值的产品,通过增加产品的附加价值正当得来。得来的利润应最大可能的分给做出贡献的员工。

第三条是归属感。管理之要在于人心,心在一起才能像一家人一样。要想心在一起就要公平公正,重视实力,把尚贤放在第一重要的位置,并且不断培养人,让人不断成长,不断有成就感,成为贤。绝不论资排辈,绝不论亲疏远近,哪怕是股东也应按贤能安排岗位,因为一将无能会累死千军。企业里人人人格平等,只是分工不同,岗位不同,没有老板与员工之分,没有领导与下属之分,大家都是同事,都是同学,一起做事,一起进步,胜则举杯相庆,败则拼死相救。
如能齐家,那么就是小企业做好了,一家店铺做好了,治国就是复制了。

治国

说完齐家,继续说治国,治国就是把一家店铺做成区域连锁,把一个小企业做成大企业。

国是由家组成,家是独立的经济单元,每个家都有收入和支出,都可以独立生存,治国就是复制家,并让这些家之间互相买入和卖出,建立起相生相克、竞争共生的关系,如同自然界的生物,没有从属关系,只有竞争中共生。

每个家的所有权和经营权分立,所有权由投资者所有,经营权由家的成员共有,每个家的销售收入去掉除人工成本以外的支出为所得收益,收益的70%归家庭成员所有,30%归投资者。每个家的成员努力创新增加产品的附加价值,销售最大化,支出最小化,收益最大化,价值的创造主要来自于人,而不是来自于资本,因此人应获得更多的收益,资本次之。

家的规模由其占有的市场容量决定,国的规模的扩大就是复制家,而不是把一个家做大。

齐家就是经营好家,治国就是复制家,平天下就是建立行业秩序,天下大同。

平天下

地球上的生命进化了几十亿年,这种进化的信息并没有消失,而是被胚胎发育的过程完整记录了。

人类的文明也进化了几十万年,我认为这种进化的信息同样没有消失,而是被孩子认知的过程完整记录了。

人类从四肢爬行到短暂站立,再到直立行走,再到使用木棒等简单工具,发明语言,发明文字,发明杠杆等简单结构机械,发明蒸汽机等动力机械,发明计算机,发明人工智能,也终究会发明机器生命。

孩子生下来慢慢学会爬,接着学会站立,然后再学会直立行走,学会使用简单工具,学会说话,学会文字,再往后的认知过程也应该与人类文明的发展过程相一致。

机器人正好可以还原生产工具的进化过程,从形状、结构到简单机械和动力机械,以及后面的智能机器,因此,机器人是孩子认知能力发育的很好的教育工具,而且语文、数学、英语都属于工具学科,其存在的意义在于掌握和发明生产工具,推动人类文明进步,机器人教育也确实融合了科学、数学、工程、艺术、语言等学科,形成了独具特色的STEAM教育。

我的初心就是让机器人教育成为一门学问,把“机器人教育学”发扬光大,这就是我想要的“平天下”。

苦乐本同源/得失应随缘/初心从未改/何妨再少年,一个终点,也是新的起点。

数据库:简述对分布式数据库的认识

所谓的分布式数据库技术,就是结合了数据库技术与分布式技术的一种结合。具体指的是把那些在地理意义上分散开的各个数据库节点,但在计算机系统逻辑上又是属于同一个系统的数据结合起来的一种数据库技术。

既有着数据库间的协调性也有着数据的分布性。这个系统并不注重系统的集中控制,而是注重每个数据库节点的自治性,此外,为了让程序员能够在编写程序时可以减轻工作量以及系统出错的可能性,一般都是完全不考虑数据的分布情况,这样的结果就使得系统数据的分布情况一直保持着透明性。

数据独立性概念在分布式数据库管理系统中同样是十分重要的一环,但是不仅如此,分布式数据管理系统还增加了一个叫分布式透明性的新概念。这个新概念的作用是让数据进行转移时使程序正确性不受影响,就像数据并没有在编写程序时被分布一样。

在分布式数据库里,数据冗杂是一种被需要的特性,这点和一般的集中式数据库系统不一样。第一点是为了提高局部的应用性而要在那些被需要的数据库节点复制数据。第二点是因为如果某个数据库节点出现系统错误,在修复好之前,可以通过操作其他的数据库节点里复制好的数据来让系统能够继续使用,提高系统的有效性。

对计算机专业来说学历真的重要吗?

我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。
这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。
先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。

目录:

张雪峰讲述的事实
我看到的事实
为什么会这样
非一流毕业生校招怎么办
非一流毕业生社招怎么办

一、张雪峰讲述的事实

腾讯娱乐的《演说家》节目播出后,“教育界的相声家”张雪峰老师又双叒上热搜了。

只不过这次不是讲段子,而是针对考研和学历问题和节目嘉宾“怼”了起来···

张雪峰认为,考研是一种提升改变的机会

一辩 局座张召忠

在张雪峰老师讲述完自己的观点之后,局座发问:“马云、马化腾、乔布斯等都没有考研,学历并不高,怎么论证这一点呢?”

张雪峰老师回答说:“那是二十年前的事情了,时代不同,环境不同了。再者,乔布斯本身是从常青藤名校退学的,你要先达到名校这个高度,而在中国要考名校是很难的。”

考了名校还不读?河南、山东考生听了想打人......

二答 鲁豫

鲁豫问张雪峰老师:你是因为真的相信考研会改变一些人的人生还是因为自己做这行所以才这么说?

张雪峰老师连续说了三遍:我是真的相信!还举了一个老家齐齐哈尔大学的例子。

我们进入社会后发现,几乎所有的大企业,都在告诉我们:学历不重要,能力更重要。

但是,500强的企业只会去那些一流的大学招聘,而不会去一些二三流的大学!有些企业甚至在招聘信息上直接注明要求985、211院校毕业。

理想很美好,现实却很骨感。正如张雪峰老师所说:学历不重要,是500强公司最大的谎言!

一辩 局座张召忠

三怼 马丁

整个节目的爆点就在张雪峰老师与马丁的互怼之间,这反应,这口才,也是没sei了 ......

节目播出之后,立刻引起网友热议,局面却是一边倒的站在了张雪峰老师这边。

@RNQJ666:什么时候学历都是重要的?到社会工作才深刻理解书到用时方恨少。

@蜗詹: 你总是嘲笑我念书没用,我却永远不会嘲笑你没念过什么书,这就是差别。

@甜瓜uu:升学,升的不只是学历,还有圈子,层次。

@大气庄重的我:作为一个上市七年,成员基本211起的公司的hr ,我表示,能力是最关键的,但没有学历你的机会和机遇就比别人少了太多。

马丁拿自己公司的员工的学历背景来论证学历不重要,本身就是一道伪命题。

因为作为老板的马丁本人就不是低学历者,还是上的名牌大学,他是青年政治学院的毕业生,这可不是一般人可以考上。据学校官网介绍,这所学校是在1948年创建的中央团校基础上于1985年12月命名组建的,是共青团中央直属的唯一一所普通高等学校。(根正苗红,一点儿都不普通好伐~)

而且,马丁毕业后,曾在清华大学人文学院做过讲师,这又是什么概念?正是青年政治学院的学历背景,才为马丁提供了在清华教书的基本学历保障。

过硬学历的拥有者,享受了学历带来的种种优厚待遇,还做了那些非211、985毕业的员工的老板,现在却告诉你,学历不重要,这本身不就是一道伪命题么?

有些人会说,我学历就是很低,但是我一样成功了。首先,每个人对成功的定义不一样;其次,有些人的成功是不可复制的;再者,获得成功的过程一定离不开学习,世上没有不劳而获的成功,只是学习的方向和方式不一样而已。

节目中,张雪峰老师还拿网络直播界红人MC天佑作为一个例子,他的人生很励志,从一个卖烤串的成为一名人气MC,按照我们现在对成功的一般定义,他是成功的,但是有几个普通人可以做到像MC天佑现在这样,人们在鼓吹无学历也能成功时,忘了它还有一个大bug——比例问题啊。
二、我看到的事实

1、二本毕业后

因为是广西的渣渣二本,XX学院(我就不提了,以免伤到校友)。我们同学毕业后,大部分同学啥都没学会。想继续从事计算机的,花了三四万,去参加培训。更多的同学是直接转行。

校招?根本没有校招好吗!去我们学校校招的都是些工厂招工的,你会去?

没办法,硬着头皮去广州找工作,2011年,一个月2500!一个学计算机的,还没工厂流水线挣的多!这就是现实,而且非常难找,只能进些创业公司,稍大一点的,没实战经验,没实习经历,又是个渣渣二本,根本没人要!

有人会说,是不是你能力不行啊?是的,相比别人,我可能能力不行。但相比我的同学,我可是他们中最优秀的,我连续三年得国家励志奖学金。每年的学校一等奖学金都会有我的。我虽然没有实习经历,但我大三就开始学软件开发,我自己开发的桌面软件有四款。(后来考研,教授就是看重我的实战能力才招我的)

我跟我另一个同学,走了完全不同的道路。我看清了之后,我考研去了。他仍然坚持技术改变命运。结果是,在北京打拼的八年,去年去面试阿里,进了面试,仍被刷了。

这就是事实!!!血的事实!!!

2、研究生后的生活

我考研报考的是中国科学院,2011年中科院大部分的研究所的分数线都是315,只有软件所和计算所的分数特别高,我报考的软件所分数张是343,而我恰恰考了342!差一分进不了面试,只能中科院内其它所调剂。申请调剂了无数次,一回回给各个所的招生老师打电话,最终等来的是一句句的:我们只接受985\211学校的同学调剂,虽然你分数比较高,但不满足硬性要求。

这就是事实!!!

经过曲折的调剂过程,我最终进了中国海洋大学。这个学校是他们眼中的985/211

人生得到了完全的改变!!!!

在研究生过程中,接触和负责的项目无数,动不动就是国家级的,虽然你自己觉得没什么技术含量,但头衔拿出来就是鲜亮!!!

因为有了本科毕业时的经验,所以,我读研过程中,我非常勤奋。努力增强自己的技术水平。

有了学校和技术能力的加持。在毕业校招时,在所有同学前,第一个进了阿里。

另外,我想说的是,我的同学们的情况,我们整个计算机学院的研究生84个人。全部都是进的一线计算机公司,百度、腾讯、阿里巴巴、360、华为、美团等,有些不太想走技术路线的,进的也都是银行总部等核心单位。

这就是事实!!!我眼中的事实!!!!
鼓吹学历不重要的,都是扯淡!!!!

3、工作后的看到的事实
工作几年后,做了校招、社招的面试官,知道了一些行业秘密,这里告诉你

校招:

在通知你笔试前,会有简历筛选环节,校招筛选简历系统中,如果你的学校,不在它筛选范围内,那你的简历是被直接丢弃的。

社招:

对于已经有了工作经验的,学历就显得不那么重要,因为工作经验和技术水平可以弥补。在社招时,所有的简历是HR先过,觉得可以了才会给部门负责人。

一般的公司都有硬性要求,非一本或非985/211的学生,五年以内工作经验的(有的是三年),直接筛掉,根本不会走到部门负责人那里。

每个大公司看重学历的程度都不同,像阿里巴巴,就不是特别看重。注意,不是特别看重,不等于不看重,等会跟你说什么是特别看重。在阿里,也有二本的同学,也在普通本科的同学。好像给人一种不看重学历的样子。我曾经单独去问过一个二本的同学,人家全国ACM竞赛第三名!!!普通本科进来的,很多都是通过实习转正的,根本不是通过校招!

而什么是特别看重呢?我曾经给一个公司内推一个同学,他在阿里工作了两年,华东科技大学的。能进阿里,肯定能力挺强,但被HR拒了,因为是,他们公司的招聘要求是:五年以内的,非985/211不要,五年以后的可以放开。

对于这样的公司我很心痛,我也写了一篇文章来专门讲述这个事实,大家可以去看下:

启舰:揭密!大厂招聘内幕!你真的能进大厂?​

与HR的对决:

后来,我专门咨询过HR,为什么会有这种筛选,学校并不能代表个人啊,学校不好,但并不表示人家能力都不行啊,总归有好的啊。谁又能保证,清华北大里没渣渣?

结果,我被diss的很惨。他说,你让我校招去二本学校?一类学校的学生都还招不完,我为什么要去二本学校!!!二本学校的学生不可否认地有人才,但你知道我劳师动众地把那么多的面试专家、项目主管搬过去校招,通过率我怎么保证?我敢这么说,只要今年我校招去了二本学校,来年我就得滚蛋!

发现这个HR太难沟通了,我就换了个HR,问问社招的事情。

问题是:为什么社招仍然有学校的限制,比如三年以内需要是985/211的?

HR回:其实,不光我们这么限制,在大公司的HR界都有普遍的认同。因为社招HR给项目主管简历,并不是HR本身的意愿。我也是非211学校出身,所以,我并不会有任何的歧视。之前,我也曾把二本、专科的同学的简历发给项目主管。结果面试通过率非常的低。你想想,一个主管,每天那么多事,年薪一两百万,天天跑去面试,每次面试必须满一小时(公司规定),结果凤毛麟角的通过率。结果,我被投诉了。差点丢了饭碗。所以,任何的规则,都是有原因的。
三、非一流校招同学怎么办

前面提到,非一流校招,会经过校招系统筛选,大概率是收不到笔试通知的。
没关系,霸笔!!!霸面!!!!走起来!!!

参加霸笔、霸面,最重要的目的,是把自己的简历给到面试官,能让他们眼前一亮的机会。所以,最关键的是如何让他们眼前一亮!!!
敲黑板!!!在校招开始前,面试眼前一亮三步准备:参加竞赛、参加实习、增加项目经验

1、参加竞赛:

在大学期间,有很多的算法竞赛、ACM竞赛,尽量参加全国性的,有含金量的比赛,这才能眼前一亮。

2、参加实习

去大公司实习,相比校招进入大公司,那是简单很多,二本学校的学生,也能进得去实习。而且在大公司都有实习生转正的机会,我所呆过的公司,只要你去实习了,表现的不错,基本上100%转正。

即便进不去大公司实习,在校招时,有实习经历,也会是简历上很重要的一项。而且一般有实习经历,就会有项目经验,这真是一举两得。

3、增加项目经验

如果实在没时间实习,或者实习中没做什么项目的话,那怎么办呢?在简历中最重要的就是项目经验了,如何解决呢?

敲黑板!!!没有项目经验就造项目经验!!!!

现在网上那么多的实战教程、github上遍地的源码分享,都可以为你所用。

在面试时,这些项目经验都可以写上,最关键的是自己要弄通、弄会,尽量先仿一遍,自己再从头到尾自己再写一遍,把所有涉及到的知识点都弄通弄会。面试的时候,就实话实说,就说你自己仿的,没有关系,做为面试官,我们更看重的是你会啥并且你是不是真的会。
我精心整理了计算机各个方向的从入门、进阶、实战的视频课程和电子书,都是技术学习路上必备的经验,跟着视频学习是进步最快的,而且所有课程都有源码,直接跟着去学!!!

只要关注微信公众号【启舰杂谈】后回复你所需方向的关键字即可,比如『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面试』、『机器学习』、『web前端』、『设计模式』等关键字获取对应资料。(所有资料免费送,转发宣传靠大家自愿)

在准备好了这些后,就可以开始准备校招了,参考这篇:

启舰:大厂秋招面试官教你准备2020秋季校招​

四、非一流社招同学怎么办

社招同学其实是有优势的,因为在已经有工作经验的情况下,学历并不是那么重要的,起码不像校招时,直接机筛就给筛掉了,社招同学可以有以下途径来进入大公司。
1、混圈子、混人脉、靠内推

你知道六人定律吗?就是说想认识世界上的任何一个人,最多通过六个人的桥接就可以认识!!

这就是圈子和人脉的重要性,你有同学、朋友、同事,他们任何一个人进了大公司,都可以内推你,而且在内推时,是可以直接跳过HR,直接把简历给他们主管的。

凡做过主管的都会有经验,不看僧面看佛面,也会给你个面试机会,会让你过来聊聊,不然,他没办法给内推你的人交待!

所以,跟同学、朋友、同事处好关系,用得着!
2、靠猎头

如果目前你还没有那些人脉,没关系,也有方案,去找猎头,猎头很好找,简历发到猎聘网,就会有猎头找你了。

虽然猎头会跟很多大公司有合作关系,也自然能把你的简历推到大公司里,但这里有两点关键条件:

需要走正规流程,先经对应公司HR筛选,再到部门主管,无跳级可能
猎头看不看得上你,主要看个人简历内容,即个人实力,所以这部分还得靠自己,如何靠自己,看第三点

3、靠自己

其实无论走什么捷径进入面试环节,在面试时除了自己,谁也帮不了你,所以,如何把自己能力提升是非常非常重要的部分。另外,需要注意的是,在自己学习时,要有方向,一方面要提升名气,使简历发光,一方面深入学习,要有真本事。

1、提升名气、使简历发光

这部分仍然是为了能顺利进入面试做的,提升自己在行业中的名气,计算机中有三个途径能提升自己的行业名气。

(1)、Github提交MergeRequest,自造轮子

在所有的技术面试环节,github所提交的开源项目,是一个非常能展示实力的存在,只要你在简历上写了gitHub地址,所有的技术面试官和简历筛选官,都会去看你的代码,直接看你的技术实力。

而且它的流行程度及star量,能提升你的行业影响力,在简历上是一个非常闪光的存在。

如果恰巧,他们的项目中有你的开源组件,那恭喜你,这次基本上过了。

如果你的开源组件非常流行,那恭喜你,等着大公司来私信你吧。你将会被争抢,此时,谁还会再关心你的学历?

(2)、写博客、写书

坚持写博客,当他们经常能搜到你的博客时,就会公认你的影响力和技术实力,在计算机领域,很多人都是靠博客起来的,比如鸿洋、郭霖等等,包括我。你以为,他们一上来就能让出版社约稿?

都是持续产出博客,博客关注者多了,出版社觉得你写得好,才会主动找你,邀请你写书的。

写博客、写书能使你在行业有一定的地位,当他们在简历上看到你的名字时候,就会油然产生一种大牛的感觉,还在在意你的学历?

我就是写博客、写书的受益者,在我面试VIVO时,表现的并不好,因为我创业一年,Android知识从来没复习过,很多知识都遗忘了,还没来得及复习,就让我去面试了。

他们原以为,我是一个特别厉害的人物,安排三个技术专家同时面,结果,一问三不知。不过,最后,还是给了我OFFER。因为他们公认我的能力是足够的,只是时间过了太久,有所遗忘,拾起来就好了。相反,如果没有这个行业影响力,那这次铁定是挂了。

(3)、最根本:深入学习,提升能力

前面讲了如何提升行业影响的方法,但根本的根本,还是要提升自己的实力,因为在面试时,是要面技术的,所有的外包装都会被揭穿,深入的技术复习只能靠大家自己了。

程序员,职场上请远离这种人!

对有些职场人来讲,甩锅就是一种生存手段。

01.从大学打篮球说起
上大学的时候喜欢打篮球,然后我又特别喜欢抢篮板,经常是跳起来的时候没事,落下来的时候偶尔会踩到别人的脚上,于是左脚经常性崴脚,这是背景。
我们班上有一个同学也喜欢打篮球,我俩水平都差不多因此也算能玩在一起,随着旷课打篮球的次数增多,我俩慢慢成了朋友。
但是后来发生了一件事情,让我觉得我们根本不是一路人。
有一次和同班几位同学一起玩 3:3 ,我俩因为个子高点都是中锋的角色,在抢篮板的过程中我又崴脚了,并且这次我听到了脚踝咯嘣一下的声响。
当时就脚疼欲裂躺在操场上起不来,在我疼得直打滚的时候,听到他在旁边对其他同学说,“我又没有碰到他”!
说实话,出来玩遇到这种事情,肯定都是自己的责任,也没想着怪谁。但是当你听着这句话的时候,确实有点心寒,正常反应不应该是多关心一下朋友的伤情吗?
果然到了后来,我们虽然打了四年篮球,但仍然交情泛泛。
但相比职场,大学校园的甩锅就不值得一提了。
02.这个问题和我无关
在我做技术管理的时候,我一直都特别特别强调生产问题,当生产出现问题的时候,对一个人的考验是综合的,这里不仅仅是技术,也包含业务熟悉度、责任心等。
并且一旦生产出现什么问题,基本上都是比较严重的问题。
所以一般我对研发的要求是: 不管你在忙什么,有什么紧急的任务,当生产出现问题的时候,请马上停下你手上的工作,立刻解决生产问题。
当然,这里指的是负责相关模块的研发人员。
但作为程序员我们都知道,很多问题刚开始是不能准确定位问题的根源,这可能就会需要研发上下游同事相互配合来解决。
这个时候偶尔会听到:

“这个问题和我无关...”

“肯定不是我的问题...”
凡是说这类话的程序员,后面我基本都不会重点调用,至少不会用在核心岗位。
责任心有时候真的是阻碍职场成长的第一大关,出现问题的时候不应该先甩锅自保,首先应该是想办法解决问题,后面再复盘哪里的疏漏。
复盘也是为了更好的避免问题再次发生,而不是为了处罚而复盘!
并且任何时候生产出现问题,技术负责人都是第一责任人,要背锅也得研发负责人先来。所以真的不要在职场上轻易甩锅,另外其实你做了什么事,领导同事都知道。
而且,凡是生产出现问题积极解决的程序员,后面基本上都成了公司骨干或者技术管理人员。
03. 相比部门之间的甩锅,程序员都是被玩剩下的
程序员之间的甩锅都是人民内部矛盾,并且程序员之间也就这些甩锅的行为,顶多可以定性为,不积极不主动,被动性解决问题。
但是如果你看到各个部门为了自己的相关利益甩起锅来,那真是甩程序员好几条街,并且程序员玩的都是人家玩剩下的。
各部门为了避免背锅,回复邮件的时候一定是个技术活,特别是公司高管之间的邮件,每个字可能都是推敲之后的结果。
产品经理和程序开发也都是经常要立字据,发邮件抄领导来确认邮件内容的可靠性,不然有可能你做的功能上线的时候,就会出现有人站出来:这个功能不是我们产品经理提出的,是开发自己做的等等。
另外如果项目延期的时候,上面领导追责时会问,为什么一个简单的需求需要做这么久,就会有人反馈研发做得太慢了,研发这个时候需要拿出证据呀,证明为什么我们做了这么久,需求改了 108 版,有木有?有邮件就有证据。
随着微信和QQ的不断普及,现在微信和QQ留言也已经成为了甩锅证据的一部分,经常邮件里面大量粘贴微信、QQ聊天截图,职场上的宫心斗不比电视剧里面的差。
现在很多同事在微信说敏感话题的时候,都是边发一句边撤回一句,以避免被有心人保留了截图证据等,这只是正常的同事关系呀,搞得跟特务一样。
经常在公司看到这样一个现象,每次公司出现奖励的时候,各大部门欢天喜地的,研发部门默默不语,通常情况下研发人数最多,奖励最少。
所有公司产品发展不好的问题都可以归结到技术问题,所有公司出现的销量喜人的业绩都和技术关系不大,因为这是你们应该做的。
这背后真正的原因是,作为技术型出身的人,在甩锅(或者邀功)方面确实很难 PK 其它部门,技术人的谦虚矫情反而影响了自身的存在感。
我且腹黑的说一下,很多所谓的领导都喜欢玩权衡之术,喜欢或者引导几个部门斗争,这样可以更好的掌控公司真实运转情况,这是很多国企型老板最会玩的。
好像有点跑题,再说部门之间的甩锅,这真的也是一种能力,技术人真的很难学习。
04.甩锅的产品总监
先声明一下我对产品经理确实没有什么偏见,大部分产品经理也都是背锅的对象,这里的产品总监只是少数特例。
某个公司年薪百万招聘了一个产品总监,号称改革型人才,最主要的是你知道部门内产品经理们的工资多少吗?一万左右。
这个人才来到公司后,果然是改革型的人才,迅速和各个部门老大打成一片,成为领导中的粘合剂,可以迅速将各个部门串起来。
但最主要的是,他不干事呀,对内压迫部门内员工,对外瞎吹牛逼到处忽悠,本来这事大家也忍了,但是他真是为了甩锅可以不择手段。
某天董事长给安排了一个急活,很着急的那种,董事长三天两头的催着,结果这个产品总监没当回事,觉得按照往常两周后出原型就行。
没想到老板特别惦记这个事情,于是就拉了产品、业务方以及各中心 Boss 开会,业务方开始甩锅,我们已经将准确的需求给产品说了(一句话的需求),产品也无奈,但这锅总得有人背着。
产品的后面不是还有研发吗?既然业务线的几个爷都惹不起,后面能背锅的就只有研发了呀,于是就说我们需求已经整理出来了,技术这边还没有给时间。
以上是背景,研发当然不知情,于是老总很生气,怎么你们研发总是掉链子?马上给我把研发总监喊下来,我要听他说说到底怎么回事。
于是产品总监上去叫技术总监,在技术总监进去开会之前,产品总监说老总说咱们项目延迟太多了,我给研发说了好多好话,到时候你进去就说产品已经给需求了,业务方变更需求,所以周期没定。
实际上产品总监连需求都没有搞清楚,就这样技术总监懵逼的走进会议室,大 Boss 上来就问你们这个项目什么时候可以做完给个时间,技术总监当然回答需求都没定给不出时间!
大 Boss 一怒之下问道,给你们 10 天能不能做出来,给个准确信息。
会后大家一了解才知道,这位牛逼的产品总监怎么给研发挖的大坑。这位产品总监在大 Boss 面前的表现一直是这样:

“没问题”,

“已经安排了”

“这个很简单”
对比一下技术这边:

“这个做不了”

“设计不合理”

“这个我们需要确认一下才能给答复”

你是老板你会喜欢谁,技术人的严谨性和喜欢吹牛逼的产品总监在一起就是个反差,说实话如果你是一个老板,你也喜欢那些对你言听计从的人,但是公司不应该是这样。

05.最后
这篇文章给大家举了三个小例子:大学同学,不主动的程序员,还有公司部门之间的甩锅大战。从小到大,一种是不值得托付的朋友,一种是不堪大任的骨干,最后一种是危害公司公平的运转。
比较讽刺的是,到了现在,甩锅能力已经成为了各大公司高管的一种能力,如果你在这方面的修养不达标,是很容易在公司被打下的。
当正确的做事和做正确的事,变成了两条不同的道路的时候,企业其实已经开始慢慢腐败了,甩锅能力达到巅峰的时候,就是摧毁自己的时候。

楼上我给大家举例的这名产品总监,走的时候部门内部员工欢送,曾经和他亲密接触的朋友们,没有一个给他说几句好话,尽是看尽笑话。

程序员必须掌握的核心算法有哪些?

由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
一、算法最最基础

1、时间复杂度

2、空间复杂度

一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等,直接通过博客搜索学习即可。

文章推荐:

算法分析神器—时间复杂度
二、基础数据结构

1、线性表

列表(必学)
链表(必学)
跳跃表(知道原理,应用,最后自己实现一遍)
并查集(建议结合刷题学习)

不用说,链表、列表必须,不过重点是链表。

三分钟基础数据结构:如何轻松手写链表?

以后有面试官问你「跳跃表」,你就把这篇文章扔给他

2、栈与队列

栈(必学)
队列(必学)
优先队列、堆(必学)
多级反馈队列(原理与应用)

特别是优先队列,再刷题的时候,还是经常用到的,队列与栈,是最基本的数据结构,必学。可以通过博客来学习。相关文章:

三分钟基础知识:什么是栈?

二叉堆是什么鬼?

【算法与数据结构】堆排序是什么鬼?

3、哈希表(必学)

碰撞解决方法:开放定址法、链地址法、再次哈希法、建立公共溢出区(必学)
布隆过滤器(原理与应用)

哈希表相关的,推荐通过博客来学习,推荐文章:

Hash冲突之开放地址法

4、树

二叉树:各种遍历(递归与非递归)(必学)
哈夫曼树与编码(原理与应用)
AVL树(必学)
B 树与 B+ 树(原理与应用)
前缀树(原理与应用)
红黑树(原理与应用)
线段树(原理与应用)

树相关是知识还是挺多的,建议看书,可以看《算法第四版》。相关文章:

高频面试题:什么是B树?为啥文件索引要用B树而不用二叉查找树?

【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。

腾讯面试题:有了二叉查找树、平衡树为啥还需要红黑树?

【面试被虐】游戏中的敏感词过滤是如何实现的?

5、数组

树状数组
矩阵(必学)

树状数组其实我也没学过,,,,
三、各种常见算法

1、十大排序算法

简单排序:插入排序、选择排序、冒泡排序(必学)
分治排序:快速排序、归并排序(必学,快速排序还要关注中轴的选取方式)
分配排序:桶排序、基数排序
树状排序:堆排序(必学)
其他:计数排序(必学)、希尔排序

对于十大算法的学习,假如你不大懂的话,那么我还是挺推荐你去看书的,因为看了书,你可能不仅仅知道这个算法怎么写,还能知道他是怎么来的。推荐书籍是《算法第四版》,这本书讲的很详细,而且配了很多图演示,还是挺好懂的。

推荐文章:

必学十大经典排序算法,看这篇就够了(附完整代码/动图/优质文章)(修订版)

2、图论算法

图的表示:邻接矩阵和邻接表
遍历算法:深度搜索和广度搜索(必学)
最短路径算法:Floyd,Dijkstra(必学)
最小生成树算法:Prim,Kruskal(必学)
实际常用算法:关键路径、拓扑排序(原理与应用)
二分图匹配:配对、匈牙利算法(原理与应用)
拓展:中心性算法、社区发现算法(原理与应用)

图还是比较难的,不过我觉得图涉及到的挺多算法都是挺实用的,例如最短路径的计算等,图相关的,我这里还是建议看书的,可以看《算法第四版》。

漫画:什么是 “图”?(修订版)

漫画:深度优先遍历 和 广度优先遍历

漫画:图的 “最短路径” 问题

漫画:Dijkstra 算法的优化

漫画:图的 “多源” 最短路径

更多算法的学习,欢迎关注我的公众号『苦逼的码农』

3、搜索与回溯算法

贪心算法(必学)
启发式搜索算法:A*寻路算法(了解)
地图着色算法、N 皇后问题、最优加工顺序
旅行商问题

这方便的只是都是一些算法相关的,我觉得如果可以,都学一下。像贪心算法的思想,就必须学的了。建议通过刷题来学习,leetcode 直接专题刷。

4、动态规划

树形DP:01背包问题
线性DP:最长公共子序列、最长公共子串
区间DP:矩阵最大值(和以及积)
数位DP:数字游戏
状态压缩DP:旅行商

我觉得动态规划是最难的一个算法思想了,记得当初第一次接触动态规划的时候,是看01背包问题的,看了好久都不大懂,懵懵懂懂,后面懂了基本思想,可是做题下不了手,但是看的懂答案。一气之下,再leetcdoe专题连续刷了几十道,才掌握了动态规划的套路,也有了自己的一套模板。不过说实话,动态规划,是考的真他妈多,学习算法、刷题,一定要掌握。这里建议先了解动态规划是什么,之后 leetcode 专题刷,反正就一般上面这几种题型。后面有时间,我也写一下我学到的套路,有点类似于我之前写的递归那样,算是一种经验。也就是我做题时的模板,不过感觉得写七八个小时,,,,,有时间就写。之前写的递归文章:为什么你学不会递归?告别递归,谈谈我的一些经验

5、字符匹配算法

正则表达式
模式匹配:KMP、Boyer-Moore

我写过两篇字符串匹配的文章,感觉还不错,看了这两篇文章,我觉得你就差不多懂 kmp 和 Boyer-Moore 了。

字符串匹配Boyer-Moore算法:文本编辑器中的查找功能是如何实现的?

更多算法的学习,欢迎关注我的公众号『苦逼的码农』

6、流相关算法

最大流:最短增广路、Dinic 算法
最大流最小割:最大收益问题、方格取数问题
最小费用最大流:最小费用路、消遣

这方面的一些算法,我也只了解过一些,感兴趣的可以学习下。
总结

对于上面设计到的算法,我都提供了感觉还不错的文章,建议大家收藏,然后可以利用零碎的时间进行阅读,有些人可能会觉得上面的算法太多,说实话,我觉得不多,特别是对于在校生的,上面涉及到的算法可以不用很懂,但至少得了解。至于书籍的话,如果你连基本数据结构都还不懂的,建议看《数据结构与算法》相关书籍,例如《大话数据结构》、《数据结构与算法分析》。如果你有一定的基础,例如知道链表,栈,队列,那么可以看《算法第四版》,不过这本书是用 Java 实现的,不过我觉得你只要学过 C,那么可以看的懂。

这些算法的学习,虽然你觉得学了没有什么用,但还是那些话,它对你的影响是潜意识的,它可以给你打下很深厚的基础内功,如果你想走的更远,那么我推荐学习,标注必学的,那么我觉得,你是真的需要抽时间来学习下,标注原理与应用的,代表你可以不知道怎么用代码实现,但是必得知道它的实现原理以及应用,更多算法的学习,可以持续关注我的微信公众号勒。

如果你觉得这篇内容对你挺有启发,为了让更多的人看到这篇文章:不妨

兼职程序员一般可以从什么平台接私活?

这个问题我进行了系统性的总结,以下将进行言简意赅的说明和渠道提供,希望对各位小猿/小媛们有帮助~

根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。

所谓的兼职职位众包,指的是需求方这边有自有工程师配合,只需要某个职位的工程师开发某个模块的项目。比如开发一个 app,后端接口有人开发,但是缺少 iOS 前端开发工程师,那么他们就会发布一个职位招聘前端,来配合公司一起完成项目开发。这种需求的特点是周期比较短、项目金额大约是在 5000~30000 之间居多。

项目整包,指的是需求方没有自己的技术团队,需要我们整包开发的项目。比如开发一个 app,需求方只有一个简单的需求文档,需要你这边有团队进行 UI 设计啊、前后端程序员开发啊等等。这种需求的特点就是周期比较长、项目金额比较大,目前平台上的项目一般在几万到几十万不等,这种项目一般都要分个三到四期来进行阶段性开发。

还有一个就是自由职业者驻场需求,适合某些需求方的保密类项目或公司有硬性要求需要驻场的项目。当然,开发内容类似于兼职职位众包,驻场费用大概在 500/8 小时到 3000/8 小时之间。

接下来,我们看一下目前的接单渠道,我们主要把这些渠道分成三类:垂直众包平台、线上技术论坛、线下自有渠道。

一、垂直众包平台

这类平台是从 15 年到 16 年开始出现的,专注于 IT 众包领域,职位内容大多集中于 UI 设计、产品设计、程序开发、产品运营等需求,其中又以程序开发和 UI 设计的需求最多,可以提供比较稳定和比较多的兼职需求来供我们选择,以下是对应的渠道:

1、猿急送-程序员兼职平台

猿急送是于15年成立,国内起步很早的垂直众包平台,目前提供的兼职职位还是比较多的,而且有竞标类职位是可以直接访问直接投递的,可以很方便小猿们进行报名匹配。

传送门:程序员兼职职位列表

工程师可以直接注册简历进行职位投递,由需求方或者平台进行筛选。未展示的分发类职位由平台直接进行推荐,这种需求大多是需求方因为保密原因不愿意发职位需求或者“懒得”发职位需求,而直接要求平台找人,一些复购的需求方也会把职位发给平台工作人员让其直接推荐。

有一点需要注意:平台对服务要求比较高,会有信用记录,所以一旦接到订单一定要好好经营认真开发。对于信用评级良好的小猿,更容易获得平台的推荐,需求方也会在某个职位的投递列表中看到其接了多少单、五星好评率是多少、具体好评和差评是什么,所以接单之后建议一定要认真对待,不断提高自己的信用记录和接单排名。

2、外包大师

PMCAFF旗下(PMCAFF是比较知名的产品经理社区)的一个众包开发平台,17年成立,经过过几次改版,目前外包大师也以技术开发为主,以众包开发和自有开发相结合形式运营。

3、 人人开发 - 应用市场开发服务平台

人人开发类似威客网站,不过不像威客那样以设计logo起家,而是刚开始就是做技术开发业务,尤其是企业管理软件行业的开发。

人人开发的注册流程比较简单一点,但是建议大家也要认真填写简历。

4、快码众包

5、开源众包

其他平台传送门:

6、我爱方案网

注:名字比较土,但是对于硬件工程师建议注册下。

7、英选

8、智筹

9、开发邦

10、码市

11、自由职客

12、解放号

二、线上技术论坛

这个指的是我们有意识地去程序员聚集的论坛上发帖,去推广自己,通过 PR 的方式来获客。这类线上论坛比较出名的有:CSDN、博客园、问答社区 SegmentFault,还有程序员“灌水”社区 V2EX。

我们拿出一个典型案例,讲一下 V2EX,这是一个程序员比较集中的灌水社区,可以提问、发帖、招聘、交易二手等。其中我们比较关心的是一个叫「酷工作」的板块,上面的「求职」和「外包」子版块里每天都会有一些兼职机会。因为这不是专业的接单平台,所以没有投递职位的按钮,你可以在职位帖子下面留言,留言之前建议先点击「发布我的简历」,简单编辑一下简历会更有效果。

还有一种方法,就是你可以单独开一个帖子,介绍一下你的技术优势、时间优势、项目优势,说明你最近想接哪类项目,如果正好有需求方需要的话,可能也会联系你。

三、线下自有渠道

这个是指朋友介绍或者高峰论坛等渠道带来的获客。

这个渠道有一定的作用,但劣势是渠道不稳定,不可持续。比如你接了一个项目,是通过参加技术会议、论坛、或者朋友同事介绍转化过来的,好处是因为认识或者间接认识,所以信任感比较强,也没人跟你竞标,所以接单难度不大。

但问题是,这些人不是全职去给你介绍项目的,也许就是突然间时间碰上了所以来了个项目,偶然性比较强,对于想持续接单,或者「想接单就有单」的工程师来说,是难以可持续发展的渠道,再加上你可能因为和对方是熟人,所以会导致一些杀价啊、拖欠打款啊、不符合市场规则的维护期啊等等情况,我建议大家抱着「有枣没枣打两杆子」的心态就可以了。

C语言编程学习必备的一些网站,干货收藏!

国外的:

1. https://www.google.com 基本上所有的问题都可以在这上面找到答案,但是访问需要点技巧。

2. http://stackoverflow.com 有干货的地方。代码遇到相关问题经常被导到这个网站去,回答质量很高,排版简洁清晰。我现在遇到问题经常会搜索词后面加一个词"stackoverflow",敲回车的同时常常要骂一下这个创始人起个名字咋那么长.....

3. http://github.com 最大的开源中心,项目五花八门,从华贵绚丽的界面到低调实用的小类库,应有尽有。需要睁大眼睛慢慢挑,适合英语好的。Ruby和Javascript的项目尤其多。

4. http://codecanyon.net 初次看到这个网站,小伙伴们表示都惊呆了。原来代码也可以放在网上卖的?!!很多coder上传了各种代码,每个代码都明码标价。看了下销售排行,有的19刀的卖了3万多份,额di神啊。可以看到代码的演示效果,真的很漂亮。代码以php、wordpress主题、Javascript、css为主,偏前台。

5. https://www.lintcode.com/ 算法学习网站,上去每天刷两道算法题,走遍天下都不怕。

6. https://www.freecodecamp.org/ 这是国外发起的一个 Web 开发学习的网站,从简单到深入,一步一步带你学习 Web 开发。就像一本练习册,并且当你完成相应的内容后,会得到相应的资格认证。

7. https://www.codecademy.com/ 包含在线编程练习和课程视频。

8. https://www.reddit.com/ 包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法。

9. https://ideone.com/ 在线编译器,可运行,可查看代码示例。

10. http://it-ebooks.info/ 大型电子图书馆,可即时免费下载书籍。

这里推荐一下我建的C/C++语言学习交流秋秋裙,前三位是:110,中间三位是:355,最后三位是:025,里面有学习不错视频教程、开发工具、电子书籍,完整的项目源码等,专业的老师解答问题!

国内的:

1. http://csdn.net 国内的程序员入门级网站,内容很多很杂,包括论坛、资源下载、博客、各种资讯等等。经常只在这个网站找到稳定的资源下载。攒积分要从娃娃抓起啊,不要到了要下载的时候才发现分不够。。。

2. http://oschina.net 国内最好的开源社区,在这里讨论问题的氛围挺不错的。创始人红薯也很热心,更新很即时,经常看到新出的开源项目在这里有翻译介绍。

3. https://cnblogs.com 个人觉得国内比较好的技术博客网站,总体质量比 CSDN 好。

4. https://zhihu.com 有一些编程的专题还是不错的,还多牛人在上面分享编程经验及个人成长。

5. http://segmentfault.com 国内版的stackoverflow,90后的作品,已经积累了不少中文问答,人气还有待提高。

6. https://www.runoob.com 自己的网站,内容丰富,新手可以作为入门指引,高手可作为手册使用,支持移动版,地址为:https://m.runoob.com

7. https://www.infoq.cn/ infoQ 内容比较有技术深度,很多大公司的架构上面都有介绍,很多实战经验非常值得借鉴。

8. https://juejin.im 掘金,一个高质量的技术社区,从 Swift 到 React Native,性能优化到开源类库,让你不错过互联网开发的每一个技术干货。

9. https://www.v2ex.com/ V2EX 是一个关于分享和探索的地方,上面有很多各大公司的员工,程序员。你想要的应有尽有。

10. https://www.nowcoder.com 面经和刷面试题,各个公司的面试题和面经分享,找工作前认真刷一刷,一定会有很大收获!拿到心仪的 offer!

11. https://www.proginn.com/ 程序员客栈是领先的程序员自由工作平台,如果你是有经验有资质的开发者,都可以来上面注册成为开发者,业余的时候做点项目,赚点零花钱。

程序员写个人技术博客的价值与意义

什么是博客

百度百科:博客,仅音译,英文名为Blogger,为Web Log的混成词。它的正式名称为网络日记;又音译为部落格或部落阁等,是使用特定的软件,在网络上出版、发表和张贴个人文章的人,或者是一种通常由个人管理、不定期张贴新的文章的网站。博客上的文章通常以网页形式出现,并根据张贴时间,以倒序排列。博客是继MSN、BBS、ICQ之后出现的第4种网络交流方式,现已受到大家的欢迎,是网络时代的个人“读者文摘”,是以超级链接为入口的网络日记,它代表着新的生活、工作和学习方式。许多博客专注在特定的课题上提供评论或新闻,其他则被作为个人性的日记。一个典型的博客结合了文字、图像、其他博客或网站的链接及其它与主题相关的媒体,能够让读者以互动的方式留下意见,是许多博客的重要要素。大部分的博客内容以文字为主,但仍有一些博客专注在艺术、摄影、视频、音乐、播客等各种主题。博客是社会媒体网络的一部分。比较著名的有新浪、网易等博客。

程序猿第三方博客平台:CSDN、博客园、掘金、简书、GitHub等
主要用途

1、个人自由表达和出版;

2、知识过滤与积累;

3、深度交流沟通的网络新方式;

4、博客营销。

但是,要真正了解什么是博客,最佳的方式就是自己马上去实践一下,实践出真知;如果你现在对博客还很陌生,我建议直接去找一个博客托管网站。先开一个自己的博客帐号。反正比注册邮件更简单,也不用花费一分钱,觉得没劲也就随手扔掉得了。

博客,之所以公开在网络上,就是因为他不等同于私人日记,博客的概念肯定要比日记大很多,它不仅仅要记录关于自己的点点滴滴,还注重它提供的内容能帮助到别人,也能让更多人知道和了解。

很好的一句话:博客永远是共享与分享精神的体现。
博客分类

按功能分:基础博客与微型博客

1.基本博客

Blog中最简单的形式。单个的作者对于特定的话题提供相关的资源,发表简短的评论。这些话题几乎可以涉及人类的所有领域。

2.微型博客

即微型博客,目前是全球最受欢迎的博客形式,博客作者不需要撰写很复杂的文章,而只需要抒写140字(这是大部分的微博字数限制,如新浪微博。

按用户分:个人博客与企业博客
个人博客

个人博客主要分为两类,一类是使用第三方平台的个人博客,常见平台有CSDN、博客园、掘金、简书,新浪博客等;另一类是独立博客,自己买域名、搭建空间和程序建立的独立个人博客。
使用第三方平台个人博客与独立博客的优缺点

其实使用第三方平台个人博客的优点也是独立博客的缺点,独立博客的优点也是使用第三方平台个人博客的缺点。
使用第三方平台个人博客的优点

节省大量的前期投入,包括时间与金钱成本
在不投入推广的情况下,只要自己的博客质量有保证,能带来可观的流量

独立博客的优点

独立博客的展示程度与效果本身便是个人能力的直接体现,由于独立博客的独立性,可以作出非常个性化的博客与内容
相比较使用第三方平台的个人博客,独立博客的价值在于自由,不会受到第三方平台的限制

本文不详细讨论独立博客搭建的技术教程,而使用免费博客平台则省去了大量的前期投入工作,可以留出更多的精力去经营自己博客的内容。但是很多程序员受到各种各样的困扰,没有写博客,这里分析一下没有写博客的原因,让我们排除困扰,开启自己的博客写作生涯。
没写博客的原因

在这里插入图片描述
浪费时间

刚开始写博客,你可能会担心这个的问题。就拿我个人经历来说吧,当时在整理 史上最强Tomcat8性能优化 这篇博客的时候各种修修补补,排版等共花了一个多星期的时间,但是当你发布博客并获得别人的认可时你会有成就感的。写博客的过程也是你成长的过程,当你渐渐养成写博客的习惯时,会意识到这是花费时间而不是浪费时间。
工作太忙,没时间写

确实IT行业的加班情况比较普遍,995的一抓一大把,不乏还有996的就不说了,但是有热情爱分享的程序员不会以这个理由为推脱,时间就像海绵,挤一挤总是有的,俗话说得好,习惯成自然。
懒于思考,疏于总结

脑子不思考就会生锈,可能当时你解决问题的时候知道了其中的原理,或者对某个知识点了如指掌,但是好记性不如烂笔头,不去温故知新,随着时间的流逝,会慢慢忘记掉的。通过写博客的方式总结记录下来,以后都可以温故知新。
怕自己的技术被别人学到,被别人超越

这个大可不必担心,你分享出来别人不一定会去学,学了也不一定懂,退一万步讲,你可以持续学习,人无我有,人有我优嘛。
想写,但不知道写什么

你需要用心去发现,去感受这个世界,每个人都有自己的想法,同一项技术,每个人的总结也不一样,说不定你写的就比别人好呢,能让更多的人接受呢。大胆迈出第一步,把写博客当作一种常态。
技术含量低,写出来没意义,怕别人嘲笑

没有人一开始就能写出很牛逼的博客,只要将你真实的所思所想所悟记录下来就可以了,比如一个很简单的Maven配置阿里云镜像,你也是可以写成一篇博客的。事实上,除了你的挚友和亲人,没有人会那么在意你,这些担心都是庸人自扰。知识是自己的,我总结我进步。
写博客最初的想法

我当时开始写博客的想法也简单,想把自己在工作学习中学到的知识和解决问题的思路记录下来,放到云端,方便自己以后要用的时候可以快速的找到。我相信别人可以写那么好的博客,我自己也同样可以的。
写博客的价值与意义

在这里插入图片描述
加深对技术点的理解,记录足迹,反映成长,

加深对技术点的理解:每写一篇博客,都可以加深对技术点的理解

记录足迹,反映成长:写博客实际上是记录一个人思考和解决问题的成长过程。很久之后,你再翻看自己以前写的文章,你会感觉得到自己的点滴变化和进步。写博客就像种一颗种子,只要记得浇水、施肥、除草和松土,秋天就会有收获
分类检索,方便日后查阅

博客就像一本书,有书名,有目录,有内容,个人都对博文进行了分类,喜欢看哪一类文章,直接去查询即可。关键词搜索也非常便捷,需要看谁的哪类型的文章,输上关键词,就有一组文章呈现出来,供你挑选阅读,它比查阅纸质书本还要方便,若写文章需要引用部分内容,直接复制过来就是了,方便得很。
观点碰撞,分享收获

有些问题大家一起讨论,或赞同,或反对,听听别人的思想,可以促进双方的共同进步。写博客的过程其实也是分享自己学习收获的过程,也可以看看别人的活法,你会受到启发;你有困难或忧愁,博友们相互排忧解难。有朋友帮助,何愁之有?分享就是快乐!交流与思想碰撞中发现问题,取其精华去其糟粕,然后更新文章,使文章更加有深度和广度。
结交更多志同道合的朋友,共同进步

博客平台上有很多高手,更有与自己兴趣爱好、思想观点相近或者对立的朋友,写了博客,自然会有许多志趣相同甚至观点完全相反的朋友来阅读,这样就可以认识许多朋友。有共同的兴趣爱好自然就谈得来,对有些观点进行探讨,也可以互相交流心得体会。
提高自己的思维能力,促进学习,锻炼大脑

看书、写博文就会经常动脑,爱动脑大脑就不会生诱变笨,经常写博客,就象经常练习脑保健操一样,天天做,月月想,能够让大脑一直得到锻炼,对于一个要靠脑袋来生活的人来讲,非常有价值。

博客写多了,你的逻辑思维是很强的,解决问题的思路会非常清晰,有利于程序员的长远发展。
辛勤耕耘,锻炼毅力,贵在坚持。

写博客并不难,就像小学生写日记一样,可长可短,可深可浅,可精可粗,没有标准。但要一直写下去就需要一定的毅力与耐力了,不写博客的理由可以罗列一大堆,比如:每天工作压力很大,事情太多等等,因此,每当想放弃的时候,都要告诉自己:不能轻易把已坚持那么久的东西给丢掉,这本身就是一种对毅力的锻炼。其实,喜欢上写博客就会成为一种习惯,一天不看就想少了什么似得,你想不看、不写都困难,慢慢地习惯就成了自然。
获得阅读量,得到更多人的认可,满足小小的成就感

好的博客,正常情况下是可以获得可观的阅读量,获得不少的点赞,得到更多人的认可。当你的博客被推送到首页,获得更多的人的点赞,收藏和评论时,你会感到无比的喜悦,满满的成就感,付出总是有收获的。
提升自己的技术写作能力,努力成为技术大牛,提高知名度,成为行业大咖

博客写多了,熟能生巧,总是能提升自己的写作能力。写的好博客多了,每天学习,每天都在进步,日积月累,你会成为一名技术大牛的,知名度也会随之提高。
传播正能量,发展自己,服务社会

多写传播正能量的博客,想有阳关心态,自己心里要有阳光,多看别人的优点自己就会进步的快一些。看别人的博客,多看正能量的,笑脸就多一点;写自己的博客,多写正能量的,精神就会爽一点。

博客被认为是报纸、广播、电视、网络以外的第5媒体,长期的积累可形成专题文献,达到与其他媒体的互动。每个领域都有一批名博,关注人数多,点击率高,有着其他媒体不可替代的优势,有深度有力度的好博文,能够很好的宣传社会、引导社会,发挥重要的影响。由此可见,写博客小处说可以发展自己,大处说可以服务社会。
总结

最后,我们来做一个总结。对于一个程序员来说,写博客可以加深对技术点的理解,记录自己的成长经历,可以结交更多志同道合的朋友,在自己进步的同时,传播正能量,帮助他人,服务社会。博客永远是共享与分享精神的体现,希望大家都可以排除各种困扰,分享自己的收获,坚持写博客,建立一个属于自己的个人博客,从今天开始,为时不晚。

想要成为一名优秀的Java程序员,这份文档必读

A、规则(1–2 级)

1、在switch 中每个 case 语句都应该包含 break 或者 return 。
2、不要使用空的for 、if 、while 语句。
3、在运算中不要减小数据的精度。
4、switch 语句中的 case 关键字要和后面的常量保持一个空格,switch 语句中不要定义case 之外的无用标签。
5、不要在if 语句中使用等号= 进行赋值操作。
6、静态成员或者方法使用类名访问,不使用句柄访问。
7、方法重载的时候,一定要注意方法名相同,避免类中使用两个非常相似的方法名。
8、不要在ComponentListener.componentResized() 方法中调用 serResize() 方法。
9、不要覆盖父类的静态方法和私有方法。
10、不要覆盖父类的属性。
11、不要使用两级以上的内部类。
12、把内部类定义成私有类。
13、去掉接口中多余的定义(不使用 public, abstract, static, final 等,这是接口中默认的)。
14、不要定义不会被用到的局部变量、类私有属性、类私有方法和方法参数。
15、显式初始化所有的静态属性。
16、不要使用 System.getenv() 方法。
17、不要硬编码 ‘\n’和‘\r’作为换行符号。
18、不要直接使用 java.awt.peer.* 里面的接口。
19、使用 System.arraycopy() ,不使用循环来复制数组。
20、避免不必要的 instanceof 比较运算和类造型运算。
21、不要在 finalize() 方法中删除监听器(Listeners)。
22、在 finalize() 方法中一定要调用 super.finalize() 方法。
23、在 finalize() 方法中的 finally 中调用 super.finalize() 方法。
24、进行字符转换的时候应该尽可能的较少临时变量。
25、使用ObjectStream 的方法后,调用reset() ,释放对象。
26、线程同步中,在循环里面使用条件测试(使用 while(isWait) wait() 代替 if(isWait) wait())。
27、不掉用 Thread 类的 resume(), suspend(), stop() 方法。
28、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。
29、在Servlets中,重用JDBC连接的数据源。
30、减少在Sevlets中使用的同步方法。
31、不定义在包中没有被用到的友好属性、方法和类。
32、没有子类的友好类应该定义成 final 。
33、没有被覆盖的友好方法应该定义成 final 。
B、建议(3级或以上)

34、为 switch 语句提供一个 default 选项。
35、不要在 for 循环体中对计数器的赋值。
36、不要给非公有类定义 public 构建器。
37、不要对浮点数进行比较运算,尤其是不要进行 ==, !=运算,减少 >, < 运算。
38、实现 equals() 方法时,先用 getClass() 或者 instanceof 进行类型比较,通过后才能继续比较。
39、不要重载 main() 方法用作除入口以外的其他用途。
40、方法的参数名不要和类中的方法名相同。
41、除了构建器外,不要使用和类名相同的方法名。
42、不要定义 Error 和 RuntimeException 的子类,可以定义 Exception 的子类。
43、线程中需要实现 run() 方法。
44、使用 equals() 比较两个类的值是否相同。
45、字符串和数字运算结果相连接的时候,应该把数字运算部分用小括号括起来。
46、类中不要使用非私有(公有、保护和友好)的非静态属性。
47、在类中对于没有实现的接口,应该定义成抽象方法,类应该定义成抽象类。(5级)
48、不要显式导入 java.lang.* 包;
49、初始化时不要使用类的非静态属性。
50、显式初始化所有的局部变量。
51、按照方法名把方法排序放置,同名合同类型的方法应该放在一起。
52、不要使用嵌套赋值,即在一个表达式中使用多个 = 。
53、不要在抽象类的构建器中调用抽象方法。
54、重载 equals() 方法的同时,也应该重载 hashCode() 方法。
55、工具类(Utility)不要定义构建器,包括私有构建器。
56、不要在 switch 中使用10个以上的 case 语句。
57、把 main() 方法放在类的最后。
58、声明方法违例的时候不要使用 Exception ,应该使用它的子类。
59、不要直接扔出一个Error ,应该扔出它的子类。
60、在进行比较的时候,总是把常量放在同一边(都放在左边或者都放在右边)。
61、在可能的情况下,总是为类定义一个缺省的构建器。
62、在捕获违例的时候,不使用 Exception, RuntimeException, Throwable,尽可能使用它们的子类。
63、在接口或者工具类中中定义常量。(5级)
64、使用大写‘L’表示 long 常量。(5级)
65、main() 方法必须是 public static void main(String[])。(5级)
66、对返回类型为 boolean 的方法使用 is 开头,其它类型的不能使用。
67、对非boolean类型取值方法(getter)使用 get 开头,其它类型的不能使用。
68、对于设置值的方法(setter)使用 set 开头,其它类型的不能使用。
69、方法需要有同样数量参数的注释 @param。
70、不要在注释中使用不支持的标记,如:@unsupported 。
71、不要使用 Runtime.exec() 方法。
72、不要自定义本地方法(native method)。
73、使用尽量简洁的的运算符号。
74、使用集合时设置初始容量。
75、单个首字符的比较使用 charAt() 而不用 startsWith() 。
76、对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。
77、一个字符的连接使用‘ ’而不使用 “ ”,如:String a = b + ‘c’。
78、不要在循环体内调用同步方法和使用 try—catch 块。
79、不要使用不必要的布尔值比较,如:if (a.equals(b)), 而不是 if (a.equals(b)==true)。
80、常量字符串使用 String, 非常量字符串使用 StringBuffer 。
81、在循环条件判断的时候不要使用复杂的表达式。
82、对于“if (condition) do1; else do2;”语句使用条件操作符“if (condition)?do1:do2;”。
83、不要在循环体内定义变量。
84、使用StringBuffer的时候设置初始容量。
85、尽可能的使用局部变量进行运算。
86、尽可能少的使用 ‘!’操作符。(5级)
87、尽可能的对接口进行 instanceof 运算。(5级)
88、不要使用 Date[] 而要使用 long[] 替代。
89、不要显式调用 finalize() 。
90、不要使用静态集合,其内存占用增长没有边界。
91、不要重复调用一个方法获取对象,使用局部变量重用对象。
92、线程同步中,使用 notifyAll() 代替 notify()。
93、避免在同步方法中调用另一个同步方法造成的死锁。
94、非同步方法中不能调用 wait() , notify() 方法。
95、使用 wait(), notify() 代替 while(), sleep() 。
96、不要使用同步方法,使用同步块。(5级)
97、把所有的公有方法定义为同步方法。 (5级)
98、实现的 Runnable.run() 方法必须是同步方法。 (5级)
99、一个只有abstract方法、final static 属性的类应该定义成接口。
100、在 clone() 方法中应该而且必须使用 super.clone() 而不是 new 。
101、常量必须定义为 final 。
102、在 for 循环中提供终止条件。
103、在 for, while 循环中使用增量计数。
104、使用 StringTokenizer 代替 indexOf() 和 substring() 。
105、不要在构建器中使用非 final 方法。
106、不要对参数进行赋值操作。(5级)
107、不要通过名字比较两个对象的类,应该使用 getClass() 。
108、安全:尽量不要使用内部类。
109、安全:尽量不要使类可以克隆。
110、安全:尽量不要使接口可以序列化。
111、安全:尽量不要使用友好方法、属性和类。
112、Servlet:不要使用 java.beans.Beans.instantiate() 方法。
113、Servlet:不再使用HttpSession时,应该尽早使用 invalidate() 方法释放 。
114、Servlet:不再使用JDBC资源时,应该尽早使用 close() 方法释放 。
115、Servlet:不要使用Servlet的 SingleThreadModel,会消耗大量资源。
116、国际化:不要使用一个字符进行逻辑操作,使用 Characater。
117、国际化:不要进行字符串连接操作,使用MessageFormat 。
118、国际化:不要使用 Date.toString() ,Time.toString() 方法。
119、国际化:字符和字符串常量应该放在资源文件中。
120、国际化:不要使用数字的 toString() 方法。
121、国际化:不要使用 StringBuffer , StringTokenizer类。
122、国际化:不要使用 String 类的 compareTo(), equals() 方法。
123、复杂度:建议的最大规模:
继承层次 5层
类的行数 1000行(包含{})
类的属性 10个
类的方法 20个
类友好方法 10个
类私有方法 15个
类保护方法 10个
类公有方法 10个
类调用方法 20个
方法参数 5个
return语句 1个
方法行数 30行
方法代码 20行
注释比率 30%~50%