可以的,b站上有很多课程资源比如,尚硅谷什么的课讲的都很不错的,都是从零基础开始讲的。其实我们软件工程专业的学生也基本上都是考自学的,在学校老师那里学到的东西不多的,知道你认真学,能把那些专业的学生比下去的。
⑵ 听说30岁,程序员新手没人要,我现在该怎么办
找工作要看三样东西:需求圈、能力圈、兴趣圈,三个圈都重叠的地方,才是最适合你的,问这个问题的话,应该是还没有仔细梳理过,“种一棵树最好的时间是十年前,其次是现在”,所以了解自己的优势、劣势永远都不晚,现在再加上30岁这个定语,看看30岁的你有什么优势和劣势。
然后思考感兴趣的企业都有哪些需求,一般来说,企业对于30岁的求职者期望会更高,要求有更多的管理能力和商业嗅觉,光写代码,熬夜拼不过年轻人啦。如果有做过不错的开发项目,并且从头到尾都了解流程,并且对结果负责,我相信企业会对你青睐有加,当然,找一个对的企业也是很重要的,新兴的物联网3D可视化领域很有前景,3D商业项目有不错的市场需求,要抓住这次机会。
ThingJS不是做项目的,我们是为项目开发者提供3D可视化开发组件,利用thingJS平台进行项目演示,一站式服务很方便,重要的是积累3D项目经验,这种实操是到哪儿都学不到的财富。
30岁的你,有了自己的3D项目,寻找合适的人脉和市场应该不再是难事。
⑶ 程序员求职过程中遇到过哪些梗
很多大公司基本上都不设置笔试,直接面试就能定出工资标准,看起来像是有点随意,但好像大家都没有什么异议,曾经跟一个同事聊到如何进行技术面试,别的不问就是问非常细节的东西,而且越问越细,只要能回答上一半能力就算还可以了。因为很细节的东西如果能够解释的非常明白从侧面证明真的做过,是不是资深的程序员不是装出来的,只需要简单的几句话可能就暴露了你的能力,因为技术岗位的描述一般非常明确,对口方向的问题涉及到细节非常繁多即使在面试之前有多少准备也很难面面俱到,一句话没有做过真的很难编出来。
⑷ 新手程序员易犯的六个错误
新手零基础学习编程,每天不可避免的都会遇到各种问题,难免会感觉很迷茫。昆明北大青鸟http://www.kmbdqn.cn/整理了新手程序员易犯的五个错误及解决措施,希望能让大家少入坑。
不使用版本控制系统
一旦你开始对代码有点熟悉的时候,学习如何使用VCS就应该成为你的首要任务。
这个系统有很多的高级功能,这对我们来说很重要。但一开始,通常会专注于settinguprepository以及committing,这有助于新手跟踪开发的进度。然后,学习fetching/pulling和pushing的概念也是很重要的,这样就可以拥有一个在线备份存储库。
2.不去阅读比你优秀的程序员的代码
北大青鸟校区老师相信这是学习的一个重要部分。新手学员常常疑惑,我为什么还要花时间去读别人的代码,在一个较大的开源社区里,学习者会有机会向优秀的程序员学习。在这里,新手可以找到一些使用你熟悉的代码编写的项目,并对它们进行深入挖掘和理解。当然不必理解所有的内容,只需要分析其中一小部分代码,这些都会让你受益匪浅。
3.快速切换语言或技术
的确,能学到一点东西的感觉会很好,在语言和技术之间切换也是有趣的。但如果新手学习者在学习过程中经常这样做,就会适得其反,也会给造成很大的损失。相反,如果对一项技术有很深入的了解,想要切换其他技术语言就会变得很容易。
4.没有完成主要项目
这是北大青鸟校区老师在观察学员自我学习过程中易犯的一个问题。一大部分新来的学员对软件体系结构有着很大的兴趣,喜欢尝试不同的模式,框架和方法来学习一些特定需求很好的编程实践。但通常,部分在编写了代码的核心部分以形成一个很小的工作演示后,就倾向于“置之不理”,然后转移到别的项目上。
5.不关心代码质量vs过于关心代码质量
没有质量问题的丑陋代码比有质量问题的漂亮代码更好。一开始可以不关心代码质量,只要你对这个问题有意识,并且愿意在编程结束时进行清理和解决问题。代码质量是很重要的,但如果没有找到平衡,就可能会过度框架住新手的应用程序。
6、不对代码进行单元测试
单元测试可能会让你觉得在莫名其妙地重复着工作。但是,将测试加入到学习的工作流程中,这从很多方面看都是有益的。
⑸ 新程序员,刚入职两个月,感觉好闹心,简单需求有时出错,复杂需求又做不来,而且有好多不会的东西。
先装傻,不要盲目去揣度上级的想法。新人刚进公司,基本都是这样的,刚开始一年时间是最难混的。只要你自己有态度,肯努力,多学习,会熬过去的。如果最后经理主动提出不留你,那也没办法了,就只能走了。
⑹ 算法不扎实的程序员,每一个都很慌
初学者经常问这样的问题,然而这些其实是错误的问题。
对于初学者而言,你最应该优先考虑的是,哪些东西构成了程序的基础?
最经典的一句话: 程序 = 数据结构 + 算法 。
如果说编程语言是程序的血肉,那么算法就是程序的灵魂。
人不能没有血肉之躯,但是没有灵魂的人依然只是一个死人。
不能单纯依靠算法衡量一个程序员的好坏,但是面试的时候考算法绝对是简单高效的筛选手段。近些年大厂的面试几乎必考算法也是这个原因。每一个算法学的不扎实的程序员,在面试的时候都很慌。
下面这些书籍应该是算法方面最常见的经典书籍。我有幸都读过,有些读完了,有些半途而废,不过基本上也都算是熟悉。顺序上由易到难,从薄到厚,每本书下面我会简单的介绍一番,希望能对你的学习有所帮助。
首先是两本算法入门书籍,也可以当做算法读物:
《啊哈!算法》
用他的自我介绍的来讲:“这不过是一本有趣的算法书而已,和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。”
图文并茂,而且画风有趣,适合新手入门,但是代码是C的,看着比较累,文字也略显冗长。
图是非常棒的,启蒙用,非教科书
《算法图解》
和《啊哈》类似,他的介绍是:“像小说一样有趣的算法入门书。”
书里面讲的很好,python代码也很容易读懂,比之《啊哈!算法》,书中的例子没有那么有趣,但是图很清晰,文字和代码不冗杂。
缺点同样是非教科书,非常浅显,三四个小时就看完了。有一种刚刚热身的感觉。
接下来这几本都是最常见的书了:
《数据结构与算法分析C语言描述》
这本书的作者几乎不浪费笔墨在一些简单的地方。书很薄,但是覆盖面很广很深,作者实在是非常厉害。
不过反过来说,就是有些地方讲的语焉不详……
这本书还有Java语言版本的,但是相比之下C的更好一些。
挺好的一本书。
还有一点是翻译不是很给力,好多人都没坚持看完。
《数据结构与算法Python语言实现》
英文版评分非常高,中文版评分非常低……
据说是也翻译的不好。另外就是本书自身错误也不少……几版过后依然很多没有改过来。
书中数学证明和介绍比较简单。因为采用Python语言的原因,比较易读。
浅显易懂,内容上循序渐进,环环相扣。相比于上一本,我会更推荐一些。厚度也不算厚。
《数据结构与算法 Python语言描述》
北大教授裘宗燕的书,这本书前面写的挺好的,尤其是在面向对象还有ADT等思想的阐述,都很不错。
但是读到后来给我一种虎头蛇尾的感觉,前面气势如虹绪论就写了很长,最后三章感觉有点草草收尾的意思。就像编辑在催稿,而作者很忙的样子……
另外就是这本书的编排顺序我个人也不是特别喜欢。
接下来是两本大部头,都是非常厚的书。
他们最大的特点就是:出现率远大于看完率
《算法导论》
算法书中的权威,MIT的6.046J就是按照这个来讲的。
公认最好的算法书,组织结构合理,内容详尽。引导读者从思维方式上对算法进行领悟。
书中对算法的数学结构进行了详尽的阐述。有非常多的数学证明。
这本书我说不出什么缺点,只能说有些内容是因为我还没到大牛的境界,暂时还无法体会理解。
我个人的观点是:不要纠结于详细的伪代码,不用纠结于连篇累牍的讲解。体会其中算法的精髓就好。
《算法》第四版
如果说,《算法导论》是学术上最好书,那这本应该是实际应用最好的书。
它对数学的要求比《算法导论》低很多,摒弃了算法的证明。
书中具体给出了每位程序员应知应会的50个算法,深入浅出,大量图解。非常棒。
java基础的话你能撸出来Hello World基本上就可以开始看这本书了,这本书最大的不友好之处在于它的第一章非常长,没看过的人又不知道哪里可以跳过。
这本书后面的翻译感觉不如前边了,不知道是换人了还是DDL了……
翻开书就会看到很多的图,配套作者在coursera上面的课程学的话事半功倍!
接下来的几本我看的比较少,简单介绍一下,希望大家自己去发现和了解,不要漏下这些好书:
《编程珠玑》
很薄一本啊,但是我放在那还没看完……
这本书被称为: 历史 上最伟大的计算机科学着作之一
融深邃思想、实战技术与趣味轶事于一炉的奇书。
内容不深,但是不是一个知识点一个知识点的给你讲解算法原理的。
这本书的核心思想是让你了解如何正确选择和高效地实现算法。书中还有一些趣闻轶事,看着倒是很有意思~
有兴趣的同学可以看看~
《算法竞赛入门经典》系列
算法竞赛入门经典书,ACM必备书籍吧算是。书中题目对于竞赛来说比较简单,但是对于一般我们平时工程来说偏难。语言用的是C/C++,请好好做例题好好做作业,读书的时候好好思考和复习~
反正我是没读过,捂脸……
《剑指Offer》
这个书很有意思,对于在校生来说我个人觉得是必看的书。没有任何工作经验的同学在面试的时候真的会被问懵的。这本书可以让你了解如何应付考官日常问题,在解答面试问题的时候,书中很多方法和思路会让考官觉得你思考的很全面,给你加不少分。
我面试的时候也曾快速扫过一遍这本书,让我在回答问题的时候条理更清晰。书中代码是C的,emmm,于是代码部分我就没太看……
《用Python解决数据结构与算法问题》
最后给大家推荐一本在线的 免费 的算法书。
https://facert.gitbooks.io/python-data-structure-cn/
不是大部头,也不是读物,新手入门足够用,书中介绍了大多数日常需要的算法,并且讲的比较浅显~转行的新手基本可以通过这本书来快速掌握常用基本算法了~
反正免费,是否适合自己看两页也就get了~
如果需要PDF版,可以在“程序员必修课”公众号后台回复:“Python算法书”获取。
⑺ 社交软件程序员靠谱吗
一般交友软件上面的都是不靠谱的,他们总是会把自己吹嘘的特别的能干,吹嘘的特别的有才华。他们只是为了能够交到更多的朋友。但这并不是他们真正的样子,都是他们伪装出来的,他们只是想要去欺骗别人,只是想要去利用别人,所以你不要相信网络上面的这些骗子。
⑻ 新入职程序员的痛苦和迷茫
我刚从动力节点毕业上班的时候跟你一样,在一家小公司做编程,虽然薪资不低,有一万六,单每天重复单调枯燥的过程,感觉自己像个上了发条的机器木偶,尤其是在地铁上挤着上班的时候,我跟老师诉苦,老师开导我,每个人都会有一段低迷时期,找不到方向,想踏出固步自封的圈子又怕跌倒。关键是,你是讨厌这份工作还是讨厌这个行业,不用着急,慢慢理清自己的内心。
⑼ HR如何快速判断应聘的程序员是否靠谱
招人这个事情放到如何重要的地位,其实都不为过。前赶集网CEO杨浩涌在一次开放式演讲中说过,CEO要花一半精力去找人。其实在Google、Facebook、Alibaba等一些公司在招聘一个员工的时候,他们是很耗费时间和精力的。一个好的人是值得花非常多的时间。你看重的人,在他身上花精力是非常值得的,他会被打动,他会感知到你确实非常在乎他,士为知己者死,好的人才觉得跟你是有共鸣的,他愿意加入你这个团队。
其实在一些中小公司,可能HR会初步筛选一些简历,然后给面试官进行面试。但其实很多时候,面试官面试的这位应聘者根本不靠谱(注意,我们现在说的是程序员招聘这个方向)。这样一来其实不仅浪费面试官的时间(其实,你知道,一般能够作为面试官的,在公司里面其实是很忙碌的),也是在浪费面试者的时间。所以,我个人觉得,HR在招聘的时候,首先可以通过一些基本的问题来快速判断应聘的程序员是否靠谱,通过HR的初步筛选后,面试官再和应聘者电话或者当面聊一些技术层面、逻辑思维层面以及团队合作层面的问题,这样就大大的增加了招聘的效率。
我个人觉得有两点:
因为程序这个行业变化更新很快,不要说刚入行的程序员,就是工作了十年的老司机,也需要不断的学习,而看书是学习的最直接体现。
HR可以在和应聘者电话沟通的过程中,可以询问他的业余时间都是怎么过的,如果应聘者没有提到读书、看书之类,我觉得多半不靠谱。当然看书并不局限于一些技术方面的书,也可以是一些非技术的书,我觉得爱看书的人,两方面的书都会看的。
我觉得第二点非常重要,首先我想要的是,应聘者简介、清晰、有条理的描述出他最近做完的一个项目或者产品的大的需求是什么,他自身在整个团队里面充当的是什么样的角色,能否描述清楚他自己做的某些功能。
如果HR能够很清晰的理解应聘者所描述的这些问题,我觉得他是靠谱的。
首先,如果作为一个非技术性的HR,能够听懂应聘者的解释,我觉得应聘者沟通、理解能力是完全没有问题。
其次,他能描述出来这个项目或者产品的大的需求是什么,说明他不是在蛮干,也说明他并非只是关注于手头上的事情,他还在关注整个团队在做什么样的事情,这也体现了团队精神。
然后,他能描述出来自己做的某个功能,说明他是真正的去实践过和思考过,思考和实践是作为一个靠谱程序员必备的素质。
总体上,快速判断一个程序员是否靠谱也就是这两点,如果这两点都OK ,没有问题后,我觉得HR再和应聘者约时间,再和面试官聊。
提出一点建议
就是HR先进行一轮电话面,沟通一些基本问题,从中觉察应聘者在表达、沟通、描述以及学习方面的能力。如果还行,可以和应聘者约定一个时间进行技术面,而面试官可以把时间选择在晚上,也就是7-9点钟,这个时候,上了一天的班,可以更好的投入到面试的上面。通过电话面,了解一下技术,以及以前的工作经历,没有问题的话,再约时间当面聊。
这是我能想到的,不喜可以喷......
⑽ 如何招到一个靠谱的程序员
1. 简历看人
阅读简历永远是面试的第一步。好的简历一定是正确、清晰并且能够体现候选人最有价值一面的。我首先会过滤掉那些包含错别字,文句不通或没有逻辑性的简历,因为如果一个程序员连自己的简历都不愿意去仔细检查并完善的话,很难想象他写出来的代码质量会如何。接着,我便会重点阅读简历中的项目经验部分,在这里我能够看到面试者的开发经验,技能栈,并且判断他们熟悉的技术框架、工具是否与目前公司要求相匹配。
这里,我还会特别关注面试者是如何来写这部分项目经验的,你需要用尽可能简练的文字来描述项目的背景,你在项目中承担的角色、参与项目的时长,你用到的技术、以及你在项目中的亮点等信息。优秀的程序员们往往有一个共同的特质,那就是善于归纳,并能够一针见血的发现问题或把一个问题说清楚。我经常看到面试者在简历中像写故事一般地描述他们的项目经历,光这一个章节就有好几页,其实这反而会给你减分,因为这会让面试官判断你缺乏必要的归纳能力。
最后你的一些与编程有关的社会化活动,如:你在GitHub上的开源项目,在知乎、V2EX中给他人的解答以及你的个人技术博客等等都会给你加分,因为这说明你对所从事的工作有着极大的热情,并愿意在业余时间去学习和提高自己,就像在我之前的 “给职场新人的10点职业建议” 一文中提到的,如果你要成为一个领域的专家,那你必须花费超过10,000小时,而这光靠工作时间是远远不够的。
2. 给面试者10分钟介绍自己最擅长的
当面试者通过了笔试和HR面试之后,你就需要面对面地对候选人进行面试。我远不是什么面试专家,但我有一些自己的独特方法。我讨厌问一些很个人的问题,比如你的职业规划是什么?你为什么想换工作?等等。我更愿意给面试者10分钟时间,让他介绍自己最擅长和最感兴趣的领域。这往往能帮助我很快作出下面的判断:
这个人对他所做的事情是否充满激情
他们是否能在团队中很有效地进行沟通
他们是否在专业领域足够擅长
你的团队是否会乐于和这个人一起工作
这一招我在面试中用得很多,而实践证明也确实非常有效。
3. 基础打牢了吗?
一般,有一定规模的公司都会为面试者安排机考或笔试,从而能首先筛掉一批未能通过的面试者。另一些规模较小的或初创公司则会让面试官直接进行技术面试。其实,我觉得这两者的差别不大,有经验的面试官往往能够通过几个最简单的技术问题,判断出面试者的技术基础是否牢固,这不是为了证明他有多优秀,而是用来判断他是否是一名合格的程序员。对于我来说,并不看重机考的成绩,因为机试的考题很多能够在网上得到,特别对于一些外包公司,他们总是能够通过各种途径得到考题,从而使得他们推送的外包能够顺利通过笔试。
下面是我经常会问的几个问题(JAVA):
HashTable与HashMap有什么区别?
Servlet是线程安全的吗?
JSP中 @include跟jsp:include的区别
HTTP的response code 403和500分别代表什么
......
这些问题都很简单,但一些基础不牢的程序员往往会在这个时候露馅。当然,根据面试岗位的不同,你还可以有针对性地问一些问题,例如,你需要找一个能写核心算法的程序员(比如 银行的总账计算,或者保险公司的保费计算),那么你可以问一些算法相关的问题。
4. 技术深度够吗?
具备牢固的技术基础,一般就可以满足项目中普通程序员的要求了,但如果你需要找的是一个资深程序员,那么你还需要对面试者的技术深度进行考察。我们现在做项目时都会大量使用框架,这能使我们的开发效率和质量都得到提升和保障,但同时也降低了对于程序员开发技能的要求。因此我一般会询问面试者下面的问题,来考察他对所使用框架的掌握程度。
请你描述一下,在这个项目中,从一个HTTP请求发起,到最终的Response返回,它在你的系统和框架内部是如何流转的?
这个问题往往能够判断出面试者对于相关技术掌握的深度。较初级的开发人员描述的层级往往比较浅,比如使用Spring MVC框架的,只能说到实现一个Controller继承BaseCommandController(甚至很多开发人员只知道继承了一个公司内部框架的基类),至于再往下Spring框架是如何进行内部流转的,就再也说不清楚了。而更资深的开发人员,往往能说出框架内部的实现机制,以及如何调用和处理的。在面试者描述的过程中,你还可以穿插询问一些比较有深度的问题,比如框架中某个类这样设计是哪一种设计模式的体现,采用这样的设计有什么好处等等。这比让面试者默写一个设计模式代码要有效、自然得多。
除了技术层面上的考察之外,对于资深开发人员,还需要考察他们的设计能力。说到软件设计,大部分面试者都能熟练地背出面向对象的三个基本特性:继承、封装、多态,也能把它们的概念描述清楚。但我一般会问下面的这个问题来考察他们的面向对象设计能力。
请用一段程序代码描述我们所在的这间房间。
我惊讶地发现至少有一半的面试者都很难准确使用Interface和Class来给房间建模,也有一些人会将最基本的代码语法或关键字写错。
5. 选择适合所在企业文化的人
这一点也曾是我经历的一个误区,我总是希望能为团队招到技术能力最强的人,而忽略了他是否与整个公司和团队的文化相匹配。这往往会造成,虽然招到了人,但没过多久就因为理念不同不欢而散的结果,反而给公司带来了损失。让我们看看GitHub的负责人是怎么说的。
我们很严肃地看待我们自己关于招聘流程的哲学。我们希望每一个GitHub员工都了解他们所要面对的环境,并保证他们是能够很好适应的。这包括我们所创造的文化、哲学、计划、错误甚至是晚餐。比起他们的技能是否满足要求,我们更看重他们的潜力以及是否能够适应我们的企业文化。
我曾在具有鲜明文化差异的不同公司或团队工作,看到许多崇尚开放、开源的程序员在一个相对封闭,具有很多流程以及规范限制的公司中很难发挥,最终选择离开。因此在招聘程序员时,选择合适的往往比选择最优秀的更重要。
6. 行为面试法
行为面试法可能是我在整个面试过程中唯一用到的教科书面试方法。一个程序员是否能够很好地工作,不仅取决于他能否顺利地完成开发任务,更重要的是在遇到一些特殊场景或问题时,他能否合理有效地处理和解决。行为面试法能够帮助我们从面试者描述的过去某一具体事件中,预测未来他在工作中可能的表现。下面便是一个我经常用到的问题。
请谈谈你在这个项目中遇到的最大困难或挑战是什么,你是如何解决的。
从面试者对上面这个问题的回答中,我能够很好地判断他是否有较强的独立解决问题的能力,而我认为这是除技术能力之外,程序员最应具备的能力。
7. 给他们一个虚拟任务
经过上面的这些环节,你可能对面试者的整体情况已经比较满意,但先别急着下结论。我曾见过能够顺利通过上面所有面试步骤,并且被雇佣的程序员,当他们进入实际工作后却没能把事情做好。
在你确定是否录用他们之前,可以给他们一个虚拟任务。我不是说一个抽象的程序问题,而是指一个真实的,可能就存在于你当前项目中,并且需要在一两个小时之内完成的一个开发任务。我曾经出过这样的考题:
写一个小程序将一个以特定格式(如CSV)存储的文本文件转换为XML格式,并存储为另一个文件。
你可以给他一台已经配置好开发环境以及IDE的电脑,让他当场编写代码。当然如果时间有限,你也可以直接询问面试者的实现思路,并简单用伪代码来描述处理过程。通过这个测试,你能够看到很多细节,比如面试者是否有良好的编码习惯,异常处理是否规范,代码逻辑是否缜密高效,以及他的开发效率是否足够高。如果面试者给出了非常优秀的解答,那么你就应该能够判断他确实是一个优秀的候选人了,因为我从没碰到过能够通过上面的测试,却在实际工作中无法做好的人。