精华内容
下载资源
问答
  • 面对一个很严厉的研究生导师,怎么做才能学到东西?修改 在知乎上差不多一直潜水,认真回答过几次问题,这是第一次问。马上研究生就要开学了,本人要读本校的研究生,本科成绩一般,没获得保送的机会。 ------先...

    展开全文
  • 自学Java最起码要学到什么程度才能出去找工作

    千次阅读 多人点赞 2020-09-22 11:18:27
    你们都知道的,我本身肯定是达不到技术专家的地步的。 我不是但是我身边很多人是,字节跳动,PDD,阿里等等的大佬我认识很多,所以以下是我问了他们的成长路径的总结,还是具有一定的代表性。 身边这些朋友都是在...

    前言

    我给你看一下一个初级程序员,到高级需要学习哪些东西,你应该会有个清晰的认知。

    你们都知道的,我本身肯定是达不到技术专家的地步的。

    我不是但是我身边很多人是,字节跳动,PDD,阿里等等的大佬我认识很多,所以以下是我问了他们的成长路径的总结,还是具有一定的代表性。

    身边这些朋友都是在互联网领域多年的大牛了,因为生活和个人习惯的原因,很多都没有写博客的习惯,或者没有公开出来,但是他们却遇到了我,我可以帮他们整理出来啊。

    目的是为了让很多跟我一样的新人,对一条完整的职业规划之路有一个清晰的认知,青铜到王者要经历些什么?

    青铜-万恶之源

    《计算机基础》,这是所有读者大学最开始都会上的课吧,我问了群里的仔,他们都说是的,我想大家也是。

    在计算机基础中我们会学到计算机的历史、计算机的特点、进制转换、内存管理、线性数据结构、网络请求协议等等。

    计算机基础真心很重要,无比重要,究极重要,为啥我这么说呢,里面涉及的计算机知识还有很多网络协议的知识,大家以后一定会用到,我可以负责的告诉你,面试也一定会问,什么Http、Https、Tcp/Ip、三次握手、四次挥手面试不要太常问。

    Tip:这里有个小插曲就是我身边那个架构师团队Leader这周面试阿里p8岗位的时候,我以为问的都是什么源码,中间件的究极操作,我想大家跟我想的一样,但是大家错了,反而问的很多计算机的基础知识。

    我聊天大概问了一下面试内容,有什么求二叉树的镜像,内核态和用户态的理解,计算机的缓存页等。

    ​ 大家是不是惊了,这他*不是我校招的题目么?怎么P8级别的大佬还问这个?其实很好理解,大家想一下到了一定的工作年限技术的广度深度都有一定的造诣了,你写代码就这样了没办法优化了,机器配置也是最好的了,那还能优化啥?

    ​ 底层,我们都知道所有语言到最后要运行都是变成机器语言的,最后归根究底都是要去跟机器交互的,那计算机的底层是不是最后还是要关注的东西了?

    福利:他这周会来我们公司面试,届时我会详细问一下具体的面试内容,如果大家想看我可以到时候整理一下写出来,看看那种级别的强者的世界到底是怎么样的。

    学完计算机基础你基本上对计算机的整个知识体系都一知半解了,对于编程或许还是很懵懂,但是你现在已经要踏入编程的门了。

    白银-编程第一课

    计算机基础学了,后面就要编程的入门课程了。

    想必看我这篇文章有99%的小伙伴都是以下面这段代码开始的自己的程序人生的吧:

    我还记得我就是大一开始学习的C语言,《C语言程序设计》谭浩强老师的课本,在第27页就是第一章,HelloWord,现在回忆起来还历历在目,老师在黑板上写下这两个庄严的单词,同桌的她和我露出无限的求知欲……

    我想所有的语言都是语法基础开始的,而且编程语言的基础语法也都是大同小异的。

    If、For、While等关键字,List、Set、Map等集合,Int、float、Double等基础类型,大家第一次学的时候我想也不会知道,这些关键字将会陪伴我们走完各自的程序生涯吧?

    接下去就难一点比如JDBC、IO、文件流啊什么的,帅丙依稀的记得当时还是代码里面写SQL然后查询,也不知道记错没有。

    学到这里,你可能觉得你JavaSE无敌,出去可以找工作了,反正当时的帅丙,觉得自己可以闯出一片天了,不知天高地厚,四处炫技。

    但是幼稚的我根本不知道,未知的前方还有什么等着我,我也不知道自己其实才刚入门,但是如果要往WEB方向发展,这些倒是基本足够了。

    但是你到现在为止学的东西都是服务端的东西呀,怎么让你的服务端东西展示给别人看呢?

    这个时候我们就应该去做个丑不拉几的页面,进行简单的交互了,你这个时候要学HTML 、Servlet、MySQL、 JavaScript、Tomcat、CSS等。

    目标呢就是写出第一个动态网站,也许只是个登陆功能,只能展示下个人资料,但这是很重要的一步,你要弄清楚的是,一个用户的点击产生的请求,是从哪里发起,哪里接收,哪里处理,哪里返回,你得理解浏览器和服务器的关系和分工,Cookie和Session,Request和Response。

    Tip:我记得我刚出来面试就有面试题是这样的,一个Http请求从网页发起到服务端产生数据返回中间经历了些什么,或者Spring做了什么?大家可以思考一下

    还有有一个自己的项目真心很重要,我就是在大学期间做了项目,至今在校园内网上稳定运行着,出来实习面试的时候基本上也是一路披荆斩棘,吊打了同行面试的仔,反正大学有个项目贼加分,是读者的大学生记住了么?在这里插入图片描述
    黄金-初出茅庐

    上面的只是WEB开发的学习初级阶段,这都是些JAVA诞生以来最原始的最官方的WEB开发技术,当然现在真正的项目很少直接采用这些技术了,现在都是前后端分离了,Vue、Node.js、React等前端的语言更新迭代速度非常快,帅丙我学了一点刚用舒服,前端的朋友告诉我又迭代了……我他*不学了!

    为了不断提高技术的易用性、开发效率和可维护性、可扩展性,无数开源项目都是在这些原始技术的基础上封装、改进。

    所以这个阶段不要盲目乐观地跑去找工作或者对实习挑三拣四,你会被打击到的,又或者找个小公司浑浑噩噩几年过去感觉跟新的技术栈脱节。

    有人跟你说小公司学的东西多,他害你的,刚开始能去多大的去多大的,越大越好,你想你去了大的你想去小的分分钟的事情,但是你小的要去大的就相对难了。

    好,初始阶段完成,开始进入WEB开发的正题,首先是传说中的框架,SSM(Spring SpringMVC Mybatis)成为熟练的增删改查程序员是必须的,在这个阶段你还要理解为什么要用这仨而不是那些Jsp、Servlet、Jdbc,你要体会到写MVC、三层架构的好处。

    这个阶段不要轻易质疑框架的价值,也许刚开始你会觉得麻烦,觉得他们有时候是多此一举,我最开始这么写的时候发现,真的恶心,什么dao,service,Controller等等,分这么多干嘛。

    等过一两年后回过头来你会觉得少了这些框架你已经很难干活了,没有分层清晰的系统,你反而开口大骂项目的架构师的。

    不过要提醒大家的是,这个阶段还要避免的心态是,能熟练地增删改查了,就自认为写程序不过如此,然后往简历上填个精通,这也是新手面试被批得体无完肤的原因之一。

    浅尝即止,是新手的大忌,为啥这么写,这么写有啥好处,有啥坏处,多问几个为什么,你多年后会感谢小编的。

    如果你学得好,这会应该能熟练地写个博客啊,小论坛啊之类的WEB项目了,也就是达到了就业的基本要求。

    Tip:而且说一下作为一个应届生,你除了基础知识,如果你有自己的技术博客,还有像样的项目能展示给面试官看,是真的很加分,搭建个简单的项目,项目流程你也知道了,技术栈也熟悉了,还可以手机访问网页给面试官现场演示,很加分的。

    像我身边的朋友Java3y,JavaGuide,我没有三颗心脏等,就是在这个阶段就已经开始写了自己的博客,并且各自都做出了成绩,这些以后都是你面试的议价能力的一部分,也是你的加分项,和你自身的财富。

    我问了一下他们,都是靠博客就已经得到不少大公司的面试邀约了,反正有项目,有不错的履历,有不错的博客,都会给你加分,如果你什么都没有,现在动手去多学点,少打两局LOL等你到我这个年纪就会发现,索然无味。在这里插入图片描述
    铂金-小试牛刀

    这会是程序员生涯的一个转折点,把握好了人生起飞,把握不好全盘皆输!

    慢慢的你会发现数据库性能实在不行,出于不甘现状,或者赶时髦,你该去了解NoSQL了,Memcached、Redis、Mongodb等非关系型数据库眼花缭乱,没关系,试着用用,能很好地缓解MySQL、Oracle之类关系数据库的压力。

    出于公司某些业务需要,你可能会钻研一个特定技术领域,比如全文搜索技术ElasticSearch(以下简称Es),那你了解了Es,你又要想到数据库的数据怎么同步进Es呢?

    你可能会接触到Logstash,Canal等中间件,然后发现可视化也是个问题,那Kibana就应运而生,用的时候发现欧洲人的分词习惯跟我们不一样,那Ik中文分词器又得了解啦。

    使用之后你还会发现他底层的Lucene有很多坑要怎避免,时间多你还可以了解Solr等等。

    总之知识就是一个体系,我经常跟群里的仔说,形成知识体系,你面试说了Es那相关的技术栈你一样要了解的,我题目取了叫《吊打面试官》就是噱头,你去面试如果面试官技术深度真的很深,我想被吊打的100%是你。

    你甚至会开始对系统中一些比较特殊的存在感兴趣,比如权限系统,单点登陆之类的,又或者某些特定业务领域的算法研究,这些是你的加分项。

    你还发现服务拆分后Http通信有诸多弊端,就开始接触优秀的Rpc框架还有消息队列中间件了,如Dubbo、RocketMQ等。

    再再后来你发现呀,数据量大得一批,表顶不住了,几亿数据查出来要好几秒,那分库分表就出来,什么水平拆分,垂直拆分,还学习了TDDL、Sharding-JDBC、DRDS等这样的分库分表中间件。

    但是你用了发现全局的唯一id生成又是一个问题,或许中间件有自带的,但是你还是要了解原理,什么雪花算法,uuid等等也得学。

    再再再后来呀,你发现分库分表也顶不住了,业务体量爆炸式增长了,你可能就需要了解动态分库分表的解决思路和解决方案了,特别是FaceBook开源的一些方案。

    再再再再后来呀,你发现动态分库分表也不行啊,很多离线的数据也很多啊,每天几个T,公司都要被败光了,那你就要了解大数据场景的离线分析啊,数据缓存啊,数据清洗,数据可视化等等啊什么的。

    那就需要学什么ODPS啊,Hadoop、Hive、Hbase等等中间件或者工具了。

    再再再再再后来你开始发现你的代码很乱,久了以后自己都看不懂,重复的,难以重用的代码堆积如山,不想维护,BUG百出。

    于是你要开始重视设计模式,合理地改造下自己的代码习惯,不再被僵化的SSH、MVC三层架构束缚住。

    再再再再再再……(你是不是没玩了?哈哈其实还真有我就不列举了)

    到这里不知道你有没有体会到我每篇文章开头那句话的意思?就是工作之后发现自己越来越无知了,你再品一下下面这句话。

    你知道的越多,你不知道的越多
    在这里插入图片描述
    Google和各种资料是你进步的动力,极少再遇到必须请教别人才能解决的问题,如果你这个阶段还老是问别人,你的技术生涯也就快到头了。

    这个阶段,如果你技术卓越和跟我一样能吹,你的收入将是白领水平,至少接近了,或者大幅领先同龄人了。

    我觉得多数程序员在工作多年之后都能达到这个水平,有的人只需要一两年,有的人却要用上五六年,在这个阶段落伍的人,有的是出于天赋和思维所限,有的是出于对技术缺乏热情,有的是出于工作内容的制约。

    等到年近中年,再也拼不过年轻人,被淘汰出局,只能在自嘲为屌丝和码农的无奈中黯然转行。

    这是个很重要的分水岭,你能不能继续进步,能不能在30岁以后继续从事技术工作,能不能在公司里独当一面,我觉得就看你能不能超越这个阶段了。

    很多烂公司里工作数年的项目经理,连这个层次都还没达到…

    为了30岁的自己听到裁员完全不虚,为了家里的老母亲不再为了省电费不舍得开灯,为了让自己……

    我想这个阶段你应该要做好准备,这也是我大篇幅介绍这个阶段的原因。

    砖石-扬帆远航

    你要读读优秀开源项目的源码,你要搞懂一些当年不懂的基础知识,你开始理解《thinking in java》的精髓,你能写一些底层的代码,有时还会觉得自己封装的比某些开源工具更好用更简单。

    当年看不懂的《深入分析JVM虚拟机》现在你已经可以对里面的知识点如数家珍,张口就来,并且能够将大量知识点带入到项目中优化,并且能够看到实质性的变化(暗示KPI)。

    WEB的难点和重点永远都在于性能、负载能力上,而现在网络的发达造成了数据量和操作密度的大大上升,硬件却没有相应的进步。

    你得试着更好地运用更多的服务器来协同工作,从WEB端到服务端到数据库,全都需要集群,需要分布式,需要合理的控制数据的流向,掌握好网站上下,一大堆机器的平衡,找出性能的瓶颈,找出稳定性和安全性的瓶颈,硬件出现故障,第三方技术出现错误,将被当成家常便饭融入到你的系统和代码里仔细考虑。

    你会开始觉得方案无比地重要,一将无能累死千军将不断应验,一个不好的设计,一个不好的方案,会让一群优秀的程序员工作成果大打折扣。

    你要关注架构知识,不能再满足于SSH三层架构到底。

    领域驱动设计,面向事件开发,敏捷开发等等一系列的思想在关键时刻能决定你项目的生死,这个阶段不再有标准范例让你照抄,你只知道思想和原理,实践却需要自己不断尝试和改进。

    多关注各种杂七杂八的开源技术,有些你可能前面已经接触过了,和通信有关的,和集成开发环境有关的,和架构有关的,各个领域你都应该能信口说上几个主流技术,虽然你可能只是听说过,了解。

    但关键时刻你得知道如何去选择技术,并快速掌握它。

    你还会去考虑尝试下别的语言,这里不是说转向什么C++ C#之类的,那和JAVA程序员不相干,我说的是一些运行于JVM之上的语言,比如scala和groovy,初识他们时你会觉得Java真的老了。

    但当你回到一个综合性的大型项目中,又会觉得Java积累下来的整个体系技术是如此完善,就像一个工业化标准一样,你可能发现光是Spring家族的东西你都受用终身,无法完全通读。

    你能把这个阶段实践好,胜任项目经理,乃至中小公司的技术总监,大厂的小团队Leader都是可以的。

    大师-登峰造极

    其实写到上面这个阶段的时候我觉得,这是很多人满足的地方了,都是小公司技术总监了,那我图啥?

    但是未知的人生还在那等着你呢,我问了身边顶级的大神,为啥要走出舒适区?去像字节、阿里等这些压力大很多的地方呢?

    他们给的回答都不太一样,但是一样的就是挑战自我吧,谁也不知道哪里是自己的终点,那为啥不多做点尝试,新的环境,新的技术栈,新业务场景挑战新的自我。

    这个阶段你的一举一动可能都关系一个项目的生死存亡,一个错误或者正确的决策就可能改变整个项目的命运,水能载舟亦能覆舟,我想用在这里也恰到好处。

    我身边这样级别的大佬凤毛麟角,但不是没有,他们在公司都是核心人物,大型项目或者项目紧要关头都是他们带领团队冲冲冲,除了问题也是能最快给出解决思路和方案的。

    Tip:我现在的老大就是这样的人,双十一大家还手忙脚乱去追数据的时候,他上来一套操作,写了几个脚本就搞定了,我们当时周围一群人,从头到尾的知识盲区,结束了还没反应过来,只能拍手叫666。

    这就是强者的世界,我所向往的世界,当然我知道这样的世界,只有一步一个脚印才能涉足。

    王者-泰山之巅

    最后王者其实我不会写任何内容,能到这个领域的人本身就是屈指可数了,小编身边有,但是我觉得大家自己体会吧,一般就是人脉,交际,能力都到了一定的高度了,这个阶段的事情我也体会不到。

    能想到的就只有先祖的诗句:指点江山,挥斥方遒。

    算是给大家留下无限遐想的空间吧,未来或许你就是你所在领域的王者也说不定的呢对吧。在这里插入图片描述
    总结

    不知不觉写了这么多了,以上是我个人眼里从0向Java程序员的发展线路,限于篇幅也不全面,实际个人成长路线可能因为工作内容的不同差异会很大,有的人偏向了底层研究,有的人偏向了业务需求设计,有的带有浓重的行业色彩,而且技术之外,还有很多知识也很重要,做Java没有轻松的方向,但一个对技术抱有兴趣的人,走到这一步时,仍然会对开发抱有热情,想要写出好的项目。

    正在学习Java的同学可以来我的Java学习裙:3907814 ,3000人十年老群,可以借鉴一下。

    纯为了生计而工作的程序猿是走不到这一步的,这一行来都来了,大家一天都是24小时,为啥有差距,我想你我都明白的,知道为啥那就干出点名堂吧。

    展开全文
  • 自学前端,学到什么程度就可以找工作了?

    千次阅读 多人点赞 2020-08-15 12:37:04
    技术上看似乎没问题,但是找工作不只要从技术上下手,还要从个人目标和公司的招人标准综合进行考量。那么接下来,我们从这几个方面来分析一下,前端工程师找工作的必要条件。 个人目标 现在我们的教育并没有太着重于...

    如果你在找前端工作,你一定求助过不少大佬传授找工作和面试经验,而你得到的答案肯定很多时候就是简单的一句话:

    把 html、css、 js 基础学扎实,再掌握vue或react前端框架之一就可以了。

    真的是这样吗?技术上看似乎没问题,但是找工作不只要从技术上下手,还要从个人目标和公司的招人标准综合进行考量,然后你还需要掌握一套有逻辑、有结构的面试回答技巧。接下来我们逐一分析一下,相信你看完之后就有了方向和方法,一定能找到满意的工作。

    个人目标

    现在我们的教育并没有太着重于个人目标和职业规划的设定,但找工作与其关系特别大。如果你想找一个大厂,那么准备方向就跟创业公司完全不一样。我们分别来看一下这两种情况。

    大厂

    大厂可能更看重你的 htmlcssJavaScript 基础,以及数据结构算法计算机网络。你的准备方向就应该是这些基础方面的东西。另外还有一些原理方面的知道,比如你要做 vue 或者 react 开发,那就要知道 virtual domdiff 算法的原理。

    创业公司

    如果你的目标是创业公司(这种公司的发展前景不可预测,可能大展宏图,也可能半途而废),你需要有大量的实战经验,因为创业公司为了抢占市场,产品的开发进度一般都会特别紧张,你需要去了就能够立刻干活;而理论方面的东西则会关注的少一些。针对面试,你需要去准备相关技术(比如 React 或 Vue) 的实战项目经验。

    所以要想知道学到什么程度才能去找工作,首先得明确一下你的目标,是想去大厂,还是去创业公司,然后分别进行准备和突破

    公司要求

    接下来再看一下公司的招聘要求,好多公司都写的特别专业、全面,除了基本语法、框架外,还要求有兼容性调整、性能优化、可视化经验,或者是掌握一些小众框架。这些招聘信息其实描述的是最佳人选,几乎在100个里面才能挑出1个来,而这种大牛级别的人自己也向往更好的工作机会,所以可能根本不会跟你有竞争关系。公司这么写招聘要求目的只有一个,就是找一个技能越全的人越好。

    事实上,你只需满足要求的百分之80%70%,甚至 50% 都有可能获得这份工作机会,因为面试不光看技术,还要看眼缘、人缘:如果面试官觉得你们投缘的话,你即使有不会的问题,他也会主动引导你帮你回答上来;要是不投缘(有些比较250的面试官),那就算你会的再多,他也会觉得你很菜(你不懂他懂的)。所以说那些招聘要求就只作为参考就好了,可以作为你以后的学习路线。不过这些技能还是掌握的越多越好,技多不压身,你可以一边面试一边准备,这样也不会互相影响。

    技术能力

    分析完外界的因素之后,来看一下咱们需要具体掌握哪些技术。

    基础

    作为一名前端工程师,html、css、JavaScript 基础是一定要掌握牢固的,所有的语法点都必须要掌握,然后还要熟识面试必考的题,比如 ES6 及后面的新特性原型链Event Loop 等等。这些不是从学校学来的,而是为了面试专门突击准备的,需要反复的去看,去研究,最后把它们理解并记住。

    框架

    掌握这些基础之后,就需要看一下前端比较火爆的框架,reactvue。大厂用 React 的比较多,中小型公司用 vue 的比较多,当然这也不是绝对的。据我目前的经验来看,React 的薪水还是比较高的,不过看你自己喜好,喜欢做什么就做什么,从这两个框架中选一个深入去学,后面有时间再去研究另外一个。具体学习和准备方法可以

    • 先学基础用法,再学高级用法,最后掌握框架原理,比如:React / VueRedux / Vuex ,因为面试官通常喜欢问这方面的问题。针对这些一定要去看看别人的总结,然后自己研究一下,会更容易理解并记住。了解原理后,有时间再去研究一下源码,对于面试会更有帮助。
    • 理论准备完之后,实战肯定也少不了,无论是校招还是社招,无论是面大厂还是面小厂,都需要应聘者有实战经验。因为光会纸上谈兵,编码能力不够也不会有公司愿意去培养。实战就建议大家自己去网上找一些项目的灵感,然后动手去做一下。刚开始可能会觉得自己技术不够,也没有一个全局的概念,这些都是正常的过程,可以跟一些课程或者书籍,或者是网上的一些资源,学习一下,免费或收费的都可以。收费的好处就是它有一个完整的体系,让你从全局上有一条路径顺着走下去,就能完成一个目标。而免费资源需要你有充裕的时间,因为在遇到问题的时候,需要你一点一点去研究。不过在完成之后,回顾一下你的项目开发过程,也会在脑子里形成体系,再把之前看过的所有资料整理一下,也就学会了,只是时间上会比较长。
    • 有些公司的实战经验要求的比较丰富,比如兼容性调整和性能优化。这种经验就需要你在开发项目中,刻意去创造问题的场景,然后解决它。比如说兼容性调整,你就得在项目中体验一下不同浏览器对于JS和CSS 特性的支持程度,然后按需调整。而性能优化则就需要从网络请求、图片加载、动画和代码执行效率下手。

    这些你搞懂了之后,基本上百分之七八十的公司都可以面过去。

    软技能

    上面说的是必备的硬性技术技能,还有一些必要的软技能,用以展示个人性格和工作能力。最重要的一项软技能是沟通能力。

    沟通能力

    沟通能力,对于面试或是汇报工作都是必须的。它跟你的自信程度是完全挂钩的,你只有自信之后才能有更好的沟通和表达能力,如果唯唯诺诺,低三下四,那么在面试或汇报工作的时候就会支支吾吾,颠三倒四。

    举个例子:好多人,包括我本人,在面试的时候都会紧张,而我又属于那种特别紧张的,有些技术可能本来是熟悉的,但面试的时候人家换一个问法、或者气氛比较紧张的话,大脑就会一片空白,想说也说不出来,特别吃亏。要解决这个问题,**就要相信自己就是什么都会,面试官也不见得比自己会的多,然后面试前事先准备好常见面试题的答案,以及过往的工作经验,可以极大的增加自信。**当准备面试题的时候,可以采用框架的形式进行组织,下边介绍两个常用框架用来回答工作经验类和原理类的问题。

    STAR 框架

    对于工作经验相关的问题,可以使用框架组织回答,比如亚马逊北美那边面试会提前会告诉你,用一个叫STAR的框架回答问题:

    • S 是说 situation,事件/问题发生的场景。
    • T 指的是 task,在这个场景下你要解决的问题或者要完成的任务。
    • A 是 action,行动,要解决上边那些 tasks,你需要付出哪些行动?比如说第1步先去调试代码,然后第2步再去检查一下哪个变量出问题了,描述清楚每一步行动。
    • R 是 result,结果,这些行动有了什么样的结果,是成功了还是失败了,对你来说有什么帮助或者增长了什么教训。又或者往大里了说,给公司带来了什么效益。

    这样一整套就比较有逻辑。

    原理回答框架

    再说原理概念类的问题的回答,也是要有一套逻辑的,就比如说解释一下某某技术的工作原理,那么你要:

    • 解释一下这个技术是干什么的(What)。
    • 它有什么好处(Why)。
    • 分析一下这个技术内部用了哪些核心算法或机制,从外到里,或者由浅入深的给它剖析出来。如果是能拆解的技术,那就把每个部分或者组件的作用简单的描述一下(How)。
    • 最后再给他总结一下这个技术的核心部分。

    例如,你要回答 react 工作原理的问题:

    • 可以先说一下 React 是做什么的它是一个构建用户界面的库
    • 然后它使用了(从浅一点的方面) virtual dom 把组件结构放在了内存中,用于提升性能。
    • 组件刷新的时候又使用了 diff 算法,根据状态的变化去寻找并更新受影响的组件(然后继续深入 diff 算法…)。
    • 再底层一些, React 分为了 React 核心React-dom,核心负责维护组件结构,React-dom 负责组件渲染,而 React 核心又使用了 Fiber 架构等等等等。
    • 如果你深入阅读过它的源代码也可以再结合源码给面试官详细介绍一下,最后再总结一下 react 加载组件、渲染组件和更新组件的过程,这个就是它的工作原理。

    总结

    这些就是前端工程师要学到什么程度才能去找工作、以及怎么找工作的一些个人看法。你需要:

    1. 设定个人目标。
    2. 辩证看待公司的招聘要求。
    3. 掌握硬技能和软技能(沟通能力)。
    4. 使用 STAR 框架和 WWH 框架组织面试回答。

    按照这些方向去准备的话,一定可以会找到满意的工作。如果找到了还请记得回来炫耀一下,如果觉得文章有帮助请点个赞吧~感谢!

    展开全文
  • 今天的话,这篇文章,主要回答一些小伙伴的问题。不过这些问题的话,相信也是大部分小伙伴会遇到的,所有,你有必要看到最后哦!... 从你能想着做一个实战项目来说,我觉得初衷是好的,确实也能真正学到

    今天的话,这篇文章,主要回答一些小伙伴的问题。不过这些问题的话,相信也是大部分小伙伴会遇到的,所有,你有必要看到最后哦!

    01 我跟着视频做的项目会被面试官嫌弃不?是加分项不?

    当然是加分项呢!不排除确实有的面试官不吃这一套,这个也看人。不过我相信大多数面试官都是能理解的,毕竟你在学校的时候实际上是没有什么获得实际项目经验的途径的。

    别担心,大部分应届生的项目经验都是自己在网上找的或者像你一样买的付费课程跟着做的,极少部分是比较真实的项目。 从你能想着做一个实战项目来说,我觉得初衷是好的,确实也能真正学到东西。 但是,究竟有多少是自己掌握了很重要。看视频最忌讳的是被动接受,自己多改进一下,多思考一下!就算是你跟着视频做的项目,也是可以优化的!如果你想真正学到东西的话,建议不光要把项目单纯完成跑起来,还要去自己尝试着优化!

    简单说几个比较容易的优化点:

    1. 全局异常处理 :很多项目这方面都做的不是很好,可以参考我的这篇文章:《使用枚举简单封装一个优雅的 Spring Boot 全局异常处理!》 来做优化。
    2. 项目的技术选型优化 :比如使用 Guava 做本地缓存的地方可以换成 Caffeine 。Caffeine 的各方面的表现要更加好!再比如 Controller 层是否放了太多的业务逻辑。
    3. 数据库方面 :数据库设计可否优化?索引是否使用使用正确?SQL 语句是否可以优化?

    然后,再给大家推荐一个IDEA优化代码的小技巧,超级实用!

    分析你的代码:右键项目-> Analyze->Inspect Code

    扫描完成之后,IDEA会给出一些可能存在的代码坏味道比如命名问题。

    并且,你还可以自定义检查规则。

    02 去外包对自己简历有影响么?

    去外包对简历的影响,主要还是看你去的公司和经历的项目,比如你在 ThoughtWorks 做外包的话我觉得对你的简历就没啥影响,甚至还是加分项。我的很多同事跳槽,都是去了字节、阿里这些大公司。

    另外,去了外包之后以后只能混外包这种说法有点自欺欺人。

    首先,外包的技术深度确实不比大公司,这点没办法,根本属性决定了。然后,外包公司一般会让你会很多东西,什么东西都想让你了解一下,这可能会导致你没有一门比较精通的技术。你是Java程序员,下个项目需要你是IOS开发,然后你就要自己学,这个还是很坑的。

    不过,刚毕业的话在外包干两年还是能学到一些东西的,因为你在外包公司会让你经历大量的实战项目。

    其实,最重要的是,自己平时要注意多多思考和学习,勿要浮于表面就好了。

    很多人抱怨抱怨公司工作强度很多大,就我来看,很多外包公司的工作强度甚至比不上甲方的程序员。

    按照大众的话来说,最好是不要去外包公司,这点是没啥问题的。不过, 如果说你目前正在外包公司工作或者你只能找到外包工作的话,不要一味抱怨,只要自己能学到东西就好!

    03 我都是 CRUD 的工作经历,该如何提高呢?

    这个读者的大概的情况是大专毕业,工作半年,目前的薪资是 7K ,他的目标是在工作一年后可以收获 10k 的月薪。他的问题是说自己应该怎么朝着这个方向努力?

    10k+的工资在北上广,可以说是在程序员中比较低的薪资水平了,即使是你刚毕业一两年情况。

    达到10k的水平要求不是很高,能完成基本的业务功能(crud),能读懂已有的老代码我觉得就完全够了。

    但是,人总是要继续往高的方向去走的,刚开始一定不要给自己设定门槛。另外,目标薪水固然重要,但是不是关键的东西,我觉得还要考虑你的工作对个人的成长。

    我觉得一个好的Java程序员应该具备下面这些素质:

    1. Java基础 :掌握 Java 基础知识(可以看《Java 核心技术卷1》或者《Head First Java》这两本书在我看来都是入门Java的很不错的书籍),当然你也可以边看视频边看书学习(推荐黑马或者尚硅谷的视频)。一定要记得多总结!打好基础!把自己重要的东西都记录下来。
    2. 多线程 :掌握多线程的简单实用(推荐《Java并发编程之美》或者《实战Java高并发程序设计》)。
    3. 算法和数据结构(可选):如果你想进入大厂的话,我推荐你在学习完Java基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。为了提高自己的编程能力,你也可以坚持刷Leetcode。
    4. 前端知识 :学习前端基础(HTML、CSS、JavaScript),当然BootStrap、VUE等等前端框架你也可以了解一下。
    5. Git : 版本控制工具Git绝对比必须的。你可以自己去Github上下载一些项目看,然后自己也上传一个项目到Github上去。
    6. MySQL : 学习MySQL 的基本使用,基本的增删改查,索引需要重点关注,存储过程可以简单了解一下。
    7. Maven : 建议学习各种框架之前可以提前花半天时间学习一下Maven的使用。(到处找Jar包,下载Jar包是真的麻烦费事,使用Maven可以为你省很多事情)
    8. 框架 :学习Spring、SpringMVC、Hibernate、Mybatis 等框架的使用,(可选)熟悉 Spring 原理(大厂面试必备),然后很有必要学习一下SpringBoot。我也遇到很多公司对于应届生直接上手SpringBoot,不过我还是推荐你有时间还是可以把Spring、SpringMVC好好学一下。不过 SpringBoot 优先级最高!
    9. Linux :学习Linux的基本使用(常见命令、基本概念)
    10. 分布式 :学习Dubbo、Zookeeper、常见的消息队列(比如ActiveMq、RabbitMQ)的使用.(这些东西可以通过黑马最后一个分布式项目来学,边看视频,边自己做,查阅网上博客,效果更好)
    11. Netty : 可以学习一下NIO和Netty,这样简历上也可以多点东西。
    12. (可选),如果想去大厂,JVM 的一些知识也是必学的(Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理)推荐《深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版》,如果嫌看书麻烦的话,你也可以看我整理的文档,在下面有链接。
    13. 微服务:微服务的一些基本概念、SpringCloud和Spring Cloud Alibaba那一套都可以学习一下。我比较推荐的是学习 Spring Cloud Alibaba,因为首先它是阿里开源的,文档比较丰富,另外,它比较新,各种组件都可以说很不错。
    14. 进阶 :操作系统底层知识、计算机组成原理、Java编码优秀实践、SQL调优、定位解决线上问题的能力等等

    知道要学什么之后,如何去学呢?

    我觉得学习每个知识点可以考虑这样去入手:

    1. 官网(大概率是英文,不推荐初学者看)
    2. 书籍(知识更加系统完全,推荐)
    3. 视频(比较容易理解,比较推荐,特别是初学的时候),另外,大家不要说自己工作很多年,技术也比较厉害了就不能看视频学习了。我认识的很多大佬,包括我经历的几个项目组的技术Leader,他们都有看视频学习技术的习惯。
    4. 网上博客(解决某一知识点的问题的时候可以看看)。

    最后,有一个建议是:看视频的过程中最好跟着一起练,要做笔记!!!最好可以边看视频边找一本书籍看,看视频没弄懂的知识点一定要尽快解决,如何解决?首先百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者认识的一些人。

    这个回答对应的视频版本,大家在B站搜索“Guide哥”即可查看!

    闲聊

    今天第一次和一位网友面基!我就简称这位老哥为文哥吧!因为文哥经常帮我在JavaGuide 的 issue上回答问题,所以, 我对他的印象很深,平时就偶尔会聊一下天。另外,文哥还在公众号投稿过一篇非常不错的文章:《5分钟白嫖我常用的免费效率软件/工具!效率300% up!》

    文哥是杭州的,今天刚好来武汉,所以就想着说一起吃个晚饭。挺好的!一起聊聊天,吐槽一下万恶的资本主义,哈哈!

    文哥和我一样都属于比较典型的程序员,一看就比较老实憨厚,也不是特别擅长言谈。从日常的接触和见面的聊天,感觉文哥还是非常实诚的。也希望文哥以后能够顺利上岸阿里!

    请文哥吃了龙虾,嘿嘿,还是挺好吃的,就是估计又要长胖一点了。

    如果你也想向我提问的话,欢迎在评论区说出来或者发邮件到我的邮箱:koushuangbwcx@163.com 。

    如果你加了我的微信的话,也可以直接在微信上给我说。我会尽量做到 100% 回复,不过,工作时间不处理消息。

    展开全文
  •  说了这么多,废话说了不少,我想表达的就是,如果有毕业之后像我这样的之前不是计算机相关专业的不是软件的,然后找不到自己相关专业工作的并且有想法想要转行到IT程序猿这行的同学,不一定要报培训机构花费一万...
  • 神经网络学习的原因

    万次阅读 多人点赞 2017-11-27 20:12:55
    神经网络故障检查列表——check list 神经网络的训练出现了问题咋办?损失函数收敛怎么办?准确率很高但输出不对是什么清况?本文提供了相当全面的检查手册。主要分为数据问题,网络问题和训练问题。
  • 游戏开发要学习哪些东西

    万次阅读 2019-04-09 18:01:55
     1、编程(C、C++、网页制作,计算机图形背景等)。  2、美术(原型概念设计、色彩、模型等)。  3、设计(核心玩法、交互等)。  4、音乐(配音等)  简介  游戏开发主要分为2D游戏和3D游戏。2D游戏...
  • 我之前里的文章,写的大部分都是与计算机基础知识相关的,...当然,在面试中也经常会被问,特别是对于应届生,对于春秋招,也可以看看我前阵子写过的文章历经两个月,我的秋招之路结束了!。也有读者经常问的计算...
  • 【来信】 你好,老师。...好像也没有动力再去这个东西,但是求职的时候,不免说自己的专业问题,结果HR门给我下的结论是:职场定位不够清晰。 所以我现在想要请教的是,我继续找专业方向的工作
  • 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。 一路走来也遇到很多困难,也踩了很多坑,同时我...
  • 目录 前言 一、爬虫反爬虫运行现状 1、真实世界的爬虫比例 2、哭笑不得的决策思路 二、爬虫反爬虫技术现状 1、为python平反 2、无法绕开的误伤率 ...爬虫与反爬虫,是一个很阳光的行业。...这里说的阳...
  • 下面用于用户处理异常的代码将会被跳过,大家都知道处理异常时都必须用到ntdll->KiUserExceptionDispatcher,你跳过异常处理应用程序,如果下面还有异常处理函数或者如果runtime还能继续运行的话,那么你就在条件...
  • 初学者Java常遇到的问题,我都给你回答了!

    千次阅读 多人点赞 2020-02-01 09:58:31
    前言 只有光头才能变强。 ... ...我是一个Java的初学者,大概了四天,对Java到底能做什么还是一头雾水,每天对着黑屏(DOS系统)除了编译还是编译,那么Java对于一个初学者来说Java可以做些什...
  • 工作总结8:从安卓调整服务端后的思考

    万次阅读 多人点赞 2017-02-19 23:09:38
    Netty Dubbo 这些中间件并能带领牛逼开发一起实现的神人,平台架构是非常非常少的,需要阅读大量开源代码和积累多年开源经验才有机会做到,写了几年业务代码天天 get set if else foreach 是绝对做不到的。...
  • 在2020的学习中,我大概学习或者重新学习了数据结构与算法的相关重要知识点、Java并发相关的底层知识、JVM的知识、Spring的相关知识,这些学习的东西都已进发布博客中去了。 由于我是转行的程序员,写博客或许能够...
  • 程序员的自我进化:学习之道,如何更有效的学习

    万次阅读 多人点赞 2018-07-06 13:41:53
    不得感叹,计算机技术更新迭代的速度太快了,作为程序员每天除了面对工作,就要学习新技术,笔者自己也例外,近三年来,笔者自己的感觉是一直在为技术疲于奔命,直到现在,也敢放缓脚步。学习对于程序员来说太...
  • 真实图形(光照模型)

    万次阅读 多人点赞 2018-04-30 11:54:14
    真实感图形,简单地说,就是希望用计算机生成像照相机拍的照片一样逼真的图形图像 。要实现这个目标,需要三部曲: 第一步:建立三维场景(建模); 第二步:消隐解决物体深度的显示及确定物体之内的相互关系;...
  • 大学计算机系最努力的同学都是如何学习的?

    千次阅读 多人点赞 2021-06-23 17:47:54
    因为小林读者里肯定还有很多是在校生,我相信这些过来人的经验会帮助你们,也让大家能提前知道如何准备,少走一些弯路,磨平校招的信息差,至于大四才知道校招这些事情。 说干就干,然后就有了这个「读者牛逼...
  • 前阵子有些读者问我大学期间的学习路线,说他自己...正好我也想记录下自己从高中进入大学这几年的学习与变化,我的大学经历,可以说是非常普通,没有参加任何竞赛,也没拿过奖金(当然,国家助学金得拿,哈哈)。...
  • 为何学习大数据,要先Java

    千次阅读 2018-09-08 11:26:31
    大数据的就业、工资的水平等等方面都让更多的人投身进入学习大数据的旗下。在我之前写文章的时候,其实总是有这样的粉丝问我,你的这文章和大数据有关系?发出了这样的质疑。 其实,我们也难发现,在外面报班...
  • 我从学习计算机现在(2013年初补充版)

    千次阅读 热门讨论 2010-04-02 10:13:00
    毕业快4年了,这个文章该改改了,我从学习计算机开始(2004)到现在应该还不到8年时间,也许对于很多人来说这个时间较短的了,但是这几年以来对于我来说算是对于人生的改变,从一个地方的小农村没见过电脑考入一个...
  • C++11学习

    万次阅读 多人点赞 2016-09-19 11:14:02
    C++11学习本章目的:当Android用ART虚拟机替代Dalvik的时候,为了表示和Dalvik彻底划清界限的决心,Google连ART虚拟机的实现代码都切换了C++11。C+11的标准规范于2011年2月正式落稿,而此前10余年间,C++正式标准...
  • 关于大学计算机相关专业学习路线的见解与分析

    万次阅读 多人点赞 2018-03-18 12:25:27
    安卓原生APP开发 手机已经改变了人类的生活,各种各样的App层出不穷,而手机系统中80%以上都是Android系统,不到的手机系统是20%IOS,还有几乎可以忽略不计的其他系统。所以Android开发已经是现在App开发的主力军了...
  • .net应该什么怎么---初学者必看

    万次阅读 多人点赞 2014-07-12 14:19:39
    上篇《了.Net做什么开发》中我讲了目前.Net开发主要方向是Web开发,因此在本篇中我将主要讲解做Web开发要哪些东西,怎么,由于内容比较多,我将分几次发。下图是我推荐的学习内容和学习顺序(除了这里列出的...
  • 牛逼!Java 从入门精通,超全汇总版

    万次阅读 多人点赞 2021-05-06 19:40:33
    文章目录Java 基础Head First JavaJava 核心技术卷一Java 编程思想设计模式Head First 设计模式图解设计模式设计模式重 Java 设计模式Java 进阶Java 并发编程实战Java 并发编程艺术Java 并发编程之美图解Java多...
  • 篇一:《工作中存在的不足及改进措施》通过近一段时间的工作,反省自身,还存在许多不足和缺点,现将近期的工作、学习中存在的不足和缺点简要总结如下:1、自身的专业业务水平高,事故应急处理能力强.虽然通过学习和...
  • 本文来自作者 刘明 在 GitChat 上分享「机器学习/深度学习书单推荐及学习方法」,「阅读原文」查看交流实录 ...我帮助过很多实习生和网上的学生,带领他们从入门一步步过渡足够从事数据挖掘工作
  • | 掘金技术征文 LienJack:艺术喵 2 年前端面试心路历程(字节跳动、YY、虎牙、BIGO)| 掘金技术征文 LienJack:2019学习学到失恋但是还要继续|2019 与我的技术之路 LienJack:一位前端 2018 绝地求生记 | 掘金年度...
  • 嵌入式Linux——学习经历

    万次阅读 多人点赞 2018-10-31 10:43:31
    简介:  本文主要介绍我学习嵌入式的经历。并结合自身的经验希望可以对大家有所帮助。 视频及教材:  郭天祥相关视频及教材,...我找的是一个规模中等的公司(我个人对这份工作还是比较满意的)。而我所面试的...
  • 打造前端MAC工作站(一)简单系统...所以,再开一个系列打造前端MAC工作站,希望对大家有所帮助设置键盘快捷键如果你是一个windows重度用户,那么有一点你是非常适应的,那就是快捷键!在windows或者linux下面的 ctrl

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,197
精华内容 41,278
关键字:

学不到东西的工作还要继续