• 如何保持注意力,高效学习


    【思维升级】这几个学习方法,打破你的思维惯性,带你走向高效人生

    程序员生存定律

    如何可以提高注意力?

    Java面试总结

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    (每日工作模板)

    要注意的几点就是:

    a、写之前要大概清楚今天的任务有哪些,可以看一下邮件、待办事情、昨天没有做完的事情、领导临时交代的事情、日常事情;

    b、大致分配时间:坚持二八法则,一次只做一件事~!

    “二八法则”,即少数的关键性的工作(占20%左右),能够创造出绝大部分的结果(占80%左右)。按照“二八法则”,我们在处理工作时就要分清轻重缓急,然后进行如下排序。

    我们会经常犯这样的错误:把所有紧急的事情列为优先考虑的事情,而不是将重要的事情当成优先考虑的事情
    在这里插入图片描述
    (四象限原则)

    C、其他小技巧:设置一个25分钟的番茄钟,一个番茄钟以内做完一项待办任务,比如:

    第一个25分钟:上厕所/倒垃圾/洗水果/洗杯子/泡茶/整理桌面;

    第2个25分钟:接电话/打电话/回邮件(比如,我早上9-11点电话会尽量不接电话,免得被打乱思路,忙完之后再抽一个番茄钟的时间打回去;每天早、中、下班前看一次邮件,所有2分钟内能够处理的邮件当即处理;剩下的比较复杂的再集中时间一起处理);

    如何让学习更有效率

    问大家一个问题,你们是不是觉得学习是不是总是好的?

    其实不对,这个观点需要升级,我们不仅仅需要学习,而且需要极其功利的读书。

    你肯定已经意识到了,在这个信息爆炸的时代,知识已经多到学不完,但是还是有很多优秀的人,他们总是在读海量的书,聊一些你完全不懂的概念,那么同样是24小时,为什么差距会那么大?时常也有人问我,你每天到底拿多少时间读书?其实就不是一个时间管理的问题,而是认知效率的问题。

    我第一次听到这个概念,其实是从古典老师那里学的。

    那什么是认知效率呢?给大家举个例子就知道了。在我刚刚大学毕业的那个暑假,有个老师跟我们说,你们有大把的时间,不知道怎么用的话就去学英语吧。问为什么?他说这个未来总有一天会用的。但是就没有什么明天马上有用的吗?

    其实总有很多人认为,多学点总没有错。其实这个思路是错的,在知识匮乏,非终身学习的时代,学肯定比不学好,但是在今天知识爆炸,终身学习的时代,要比的不是学不学,而是认知效率。

    你花同样的时间资源精力,但是在不同的事情上就会有完全不一样的回报,这就是认知效率的不同,认知效率低的人都在做低水平的勤奋,牛人真正的秘诀是在最精华的资源上,以高很多倍的认知资源来学习,所以认知效率是你的很多倍。

    接下来给大家详细的介绍一下如何学习来提高你的认知效率:

    极其功利的少读书

    首先,我们来了解一下什么样的知识学了效率最高?

    1、能解决当下问题;
    2、学了有地方用;
    3、难度适中的知识学起来效率最高;

    举例:你在国内怎么学英语都学不好,但是丢到国外三个月就能交流了,因为在国外,交流是刚需,有地方练习,以及老外对你的发音口音很宽容,难度适中,这种时候,三个条件都具备,效率就高,学的就快。

    这就是为什么你总是看很多书,搜集很多书单,学习很多的课程,但是为什么你成长的不快,学习的效率低下的原因,因为你没办法解决你当下最需要解决的问题,你学了没有马上用起来很快就会忘记,难度不适中的话,太难了,你就不肯去继续钻研,太容易的知识本身也无法使你获得什么成长了。

    那我们可以采取的步骤就是:

    • 1、从众多问题中列举自己眼下最想解决的问题,做一个问题清单;

    • 2、为这些清单做一个紧急性排名;

    • 3、去豆瓣/知乎上寻找问题相关的书单;(我们时间精力有限,最好一开始就找好书、好老师来学习~)

    • 4、不要从第一页开始读,从目录和框架出发,找出你最着急阅读的章节;

    • 5、为问题记录答案;

    • 6、再开始其他章节阅读;

    获得的好处就是:你能有最短的时间尽快获取你需要的知识,并且马上运用学习实践~

    极其功利的配置资源

    在《如何阅读一本书》中给阅读做了几个分类,娱乐性,知识性,心智性,如果比作爬山:

    娱乐性是下坡,越走越舒服,

    知识性是平坡能开动,但是略微费力,

    心智提升类是爬坡,看起来会很累,但是真的会提升脑力和理解力,理解新观点的速度会加快,也就是我们说的学习力增强了。

    这就是为什么很多人天天学习,但是学习能力却没有上升,而且随着年龄增长,自己的脑力体力下降,于是觉得年龄大了,脑子不好使了,其实是心智提升类书籍读得少的缘故,因为他主要的认知是娱乐性和知识性的,你哪怕读一辈子报纸,也并不会增加学习力。

    学习其实也是一样,你可以根据认知目的的不同,设置不同的目标,分配不同的资源。

    比如说,提高心智的认知难度很大,属于攻读,需要有大段的时间,系统性的阅读,我一般放在早上或者是晚上学习效率高的89点~比如学习《人类群星闪耀时》等书的写作技术,就是属于这种类型;

    知识性阅读的目标就是知道某件事,所以特别适合碎片化学习和社交性学习,可以在早上上下班坐地铁的时候,用碎片化时间检索式的读或者听书。我会在早上,涂护肤品和化妆的时间,快速的听完一本书,听的时候再迅速判断是不是有用的知识,来决定自己的涉入深度。一些行业调查报告和专业书籍比如《人生设计》,《认识电影》就属于这种类型;

    娱乐性的学习,主要用来放松和陶冶,认知资源可以很低,放在累的时候读几页,比如刚刚做完一件事情之后再看会有换脑子的感觉,

    最好的书是三者兼有,不同时间读出不同功能来的,比如彼得德鲁克的《卓有成效的管理者》、比如《高效能人士的七个习惯》

    所以一定要强忍住买书的欲望,极其功利的分配资源,从您的需求开始区分三种阅读设定目标,分配资源。

    总结一下:

    娱乐型:带来快乐,消磨时间——适合放松时读;

    知识型:增加信息——适合碎片化学习;

    心智类:提高认知和学习力——需要大段时间的思考、吸收以及和高手讨论;

    不要从第一页开始读书

    最愚蠢的方式就是直接找一本书,打开第一页,然后往下读。

    更好的办法是先选书,可以通过看书评的方式,中文的看豆瓣,英文的看英文版,亚马逊的评论一般很有用,平行选择几本书,选择其中一本最好的,

    然后你在看目录,一般购书的网站都会有目录,大概知道书的内容和框架,有时候有趣的序也值得读,最后再看具体章节,带着问题直接切入要读的章节,想系统学习,可以从目录开始看,这样的确会用你大概15分钟时间,来学书,但是比起你在一本无用的书上花好几个小时,难道不是认知效率提升了?

    极其功利的读书,按需分配来读书,不从第一页开始读书,有了目的性,认知资源,以及带着问题读的三个筛子,要读的书应该少75%,阅读速度至少会提升一倍,不会有太多知识来烦扰你了。

    为什么很多人明知道这个玩法,最后也不一定能这样学习?

    为什么很多人做不来,因为我们的大脑会本能的选择最简单,最不耗脑子的方式进入,那就是拿起一本大家都在看的书,说“多读点书总没有错,大家都在读”;

    而功利的读书法,选择了延迟满足,先找到目标,调整好资源,带着问题进入,就这三步就让你跑赢了90%的人,好的方法都是逆人性的。

    学习路线分享

    1.HTML、CSS、JavaScript,前端永恒的三件套,这三个学的越扎实,以后走的就越稳越远。看似很简单,想精通需要费极大的功夫。
    2.Vue或React,开始出现分支,像是技能树,初期二者选一即可,想冲击大厂个人推荐React,最好是看完一遍教学视频后再自己看几遍官方文档,练-下官方的API示例。
    3.框架周边生态,如果你在2中选了Vue,那么你要学Vuex和Vue Router甚至Nuxt.js,如果你选了React,就要学Redux(Mobx), React-Router,React- Saga甚至是集成框架Umi, Dva等。学完可以找一个项目实战视频练习,将之前碎片的知识串起来。
    4.Webpack和Node.js,前端逐渐工程化,这方面的知识必不可少。
    5.数据结构与算法,中大厂面试必考,手写算法题,需要好好掌握,leetcode常见100题多加练习。
    6.计算机网络,面试中也是经常考察如TCP、HTTP、HTTPS、DNS等概念和特性等。
    7.Git基本操作,去公司上班不再是单打独斗,需要多人协作,需要把基本操作学明白。

    前端学习建议

    1.学前端,不能当成语文来学。能力不是背出来的,也不是理解出来的,甚至不是学出来的。而是练出来的,孰能生巧,是唯一适用的好办法。就像打羽毛球,打篮球。理论动作背100遍,上场照样打不到球,得不了分。只有反复练习,配合理论,才能得心应手,上手自如。

    2.如果一定要说一个好的学习方法,能够一力降十会,事半功倍。那么就是关上手机,这比一切提效方法都来的实在。对于现在的大家而言,我认为现在最大的难题就是分心的事太多了。因此务必要采取强制的手段,做到两耳不闻窗外事,心无旁骛,才能事半功倍。

    3.一切的努力,都要建立在心甘情愿下,才会有价值。所谓,心想事成。志不立,天下无可成之事,心不甘情不愿,不如不做。学习前端的周期也不算短。如果没有内驱力,会很难坚持下去。所以要多想想,学习到底是为了什么,以后要过什么样的生活。想明白了,目标坚定了,在开始学。

    4.别给自己定太高的目标,不要眼高手低。人很难在自我打击中,去坚持一件事。目标定得再高,水平却不够。凡事过犹不及,合适最重要。目标和能力,相辅相成,才能相得益彰。

    5.不要老是攀比。成功重在持之以恒。人与人的差别,大于人和猪的差别。每个人的过去不一样决定了他现在一定不一样。我们不能改变过去,但我们能一点点的改变现在,从而改变未来。每个人都有自己的亮点和优势,不要让别人的天赋,打击了自己的信心。

    如何让学习不再盲目

    21年程序员总结给编程菜鸟的16条忠告

    • 入门期间不要盲目看太多书,找一本网上或身边有经验程序员推荐的教材,先系统的学习。

    • 多看帮助文档,帮助文档就像一个游戏的玩法说明通关秘籍,该看就看别太自信。

    • 菜鸟容易被对象、属性、方法等词汇迷惑?那是你连最基础知识都还没掌握。

    • 不要忽视没一个看起来不起眼的问题,经常总结做到举一反三。

    • 没积累足够知识和经验前,你是开发不出一个完整项目的。

    • 把最新技术挂在嘴边,还不如把过时技术牢记心中。

    • 活到老学到老,只有一招半式是闯不了江湖的。

    • 看得懂的书,仔细看;看不懂的书,硬着头皮也要看完。

    • 书读百遍其义自见,别指望读一遍就能掌握。

    • 请把教程里的例子亲手实践下,即使案例中有完整源码。

    • 把在教程中看到的有意义的例子扩充;并将其切实的运用到自己的工作中。

    • 不要漏掉教程中任何一个习题——请全部做完并做好笔记。

    • 水平是在不断的实践中完善和发展的,你与大牛差的只是经验的积累。

    • 每学到一个难点的时候,尝试对朋友或网上分享你的心得,让别人都能看得懂说明你真的掌握。

    • 做好保存源文件的习惯,这些都是你的知识积累。

    • 遇到问题不要张口就问,要学会自己找答案,比如google、百度和w3cschool上都有很多编程相关资料,你只要输入关键字就能找到你的答案。

    • 死记硬背命令没有任何意义,无论linux、sql还是git、redis等,这些万年不变的命令没必要花时间花精力刻意去记,用的多了自然就记住了,根本无需去刻意记,小时候背课文、英文单词、工作了背命令?脑子不是用来干这些体力活的。

    • 编程的真谛是思想,编程思想、解决问题思维,而不是刻板冰冷的命令,就有那么一些以死记硬背各种命令为能事,我深鄙视之,殊不知,新手程序员和老程序员差的就是编程思想、解决问题思维(恐怕很多老程序员都没有这个意识),编程语言只是解决问题的工具,我们终极目的不是编程,是解决问题!不要本末倒置、舍本逐末。

    为什么学习JVM

    很多人应该都和我有一样的想法,每天CRUD就完了,学习JVM 堆、栈、方法区、程序计数器、执行引擎、标记清除算法、复制算法、标记整理算法、分代回收算法等等等等,这些东西在实际开发中又有什么用呢?

    学之前,百思不得其解,但因为面试需要,又不得不学,随着课程的深入,我渐渐有些明白了,先总结如下:

    1、学习JVM能更深入的理解Java这门语言,能理解Java语言底层的执行过程,很多时候要解决一个问题必须深入到字节码层次去分析,才能得到准确的结论,而字节码就是JVM的一部分。

    2、学习JVM,为了项目上线后去排查一些程序log日志中无法呈现的问题,比如内存溢出、GC太过频繁导致的高延迟问题,这时候就需要去看GC日志了,如果你连GC日志是什么都不知道的话,又怎么去排查呢?看GC日志,就得知道什么是年轻代、老年代、伊甸园区、survivor区、元数据区等等内存模型的概念及其特点。懂了这些还得知道GC的时候为什么会导致高延迟呢,这时候让我想到了各种回收算法的优劣势,高延迟时,是不是调整一些参数就可以了呢?

    3、能够利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以辅助你观察Java应用在运行时堆的布局情况,由此你可以通过调整JVM相关参数提高Java应用的性能。

    4、比如用JMeter测试程序高并发时的性能问题,需要了解 请求响应时间,吞吐量,CPU占用率,内存使用率,这些东西是不是也和JVM有关呢,比如是不是少声明一些全局变量,少声明一些存在时间长的大变量(比如全局缓存的hashmap),内存占用率就能低很多了呢?

    以上的种种都与JVM息息相关,现在用不上,不代表以后用不上,不代表面试官不会问,虽然你没用过,但是面试官的问题你都能答的面面俱到,岂不美哉。

    面试方法

    1、项目本身

    1.1. 项目的背景是什么,解决一个什么样的问题?
    1.2. 项目中你的职责是什么?
    1.3. 项目的基础功能有哪些?
    1.4. 项目使用的技术栈是什么,技术架构是怎么样的?
    1.5. 使用微服务了吗? 项目是怎么搭建的,机器配置是什么样的,有做分布式吗?
    1.6. 项目的具体功能细节,比如论坛项目中评论是如何存储的?怎么展示所有的评论?
    1.7. 项目中框架或者中间件的使用细节。项目里怎么用ES的,ES怎么支持搜索的?缓存和DB是如何结合使用的?

    2、项目扩展

    2.1. 项日存在哪些问题,你准备怎么解决?
    2.2. 项目的具体功能点如何优化?如论坛项目,查询评论是在DB里扫表查询吗?想要查询更快可以做哪些优化?
    2.3. 项目中最有挑战的模块是哪个,你是怎么解决的?
    2.4. 项目中使用某种框架的原因,比如使用了本地缓存Caffeine,为什么使用这个Caffeine,不使用Guava?
    项目要增大10倍的qps,你会怎么设计?
    2.5. 项目上线后出现线上问题怎么解决?如频繁fullGc,定时任务失败怎么办?

    3、高频问题

    1、找个印象最深的项目说说?(简历中不止一个项目)
    2、你项目中遇到的最大的问题是什么?你是怎么解决的?
    3、你项目中用到的技术栈是如何学习的?
    4、为什么做这个项目,技术选型为什么是这样的?
    5、登录怎么做的?单点登录说说你的理解?
    6、项目遇到的最大挑战是什么?(类似问题2)
    7、说说项目中的闪光点和亮点?
    8、项目怎么没有尝试部署上线呢?
    9、介绍项目具体做了什么?(项目背景)
    10、如果让你对这个项目优化,你会从哪几个点来优化呢?

    以上总结的10大高频问题,均来自网友的面试问题分享。

    大家做完一个项目之后,一定要去细扣一两个模块,并在面试中与面试官进行深入的交流。

    比如说登录,可以思考一下登录具体的流程,前后端如何执行步骤。

    比如一些电商类的分布式锁,是如何实现的?分布式事务等?这些均可以细致去思考准备等。

    通过自己具体介绍项目中的一两个模块,面试官就会对你有比较深入的了解,这样给你的面评就会比较好。

    当然在项目中可能还会引出一些其他的内容,顺延可能就到八股文环节了~

    如果是实现的比较简单,没有使用什么中间件,只有增删改查,就会针对表的设计,一些模块的设计思路,还有场景问题,大多是那些你没有使用的中间件解决的问题:问如果很多用户访问你的主页,你会怎么办(这种高并发的问题是使用中间件解决的,你没用到,看你能不能很好的回答上来怎么解决)

    4、结合电商类面试题分析一些流程

    秒杀三问题: 高并发, 少卖, 超卖. 问题描述和解决方法?
    问秒杀项目:介绍一下你对项目高并发和高可用的理解?
    库存超卖如何解决的?(商城类项目)
    Redis缓存的库存怎么解决库存的超卖?
    项目支持多大的并发量?有没有测试过呢?
    你这个项目中消息中间件用来做什么的? 限流如何实现? 分布式锁和分布式事务项目有用到吗?详细聊聊?
    分布式锁有哪些实现方式?你项目中用到的是哪一种? 谈谈你对分布式事务的理解,你觉得重要吗? 分布式事务有哪些实现方式?Seata 用过吗?
    抢购业务流程说说? 如何实现在秒杀场景下的限流服务? 流量削峰在秒杀场景下有考虑过存在的问题和解决方案吗?
    如果请求的数据丢失该怎么办?有什么解决方法吗?

  • 相关阅读:
    mysql索引条件下推 、 count(*)、count(1)、IN 、exists等
    数据库的约束和设计
    SpringCloud学习笔记(四)
    JavaScript 通过正则测试页面是否出现连续的重复字符
    【C语言】柔性数组
    【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅱ—— 创建和添加证书模板
    苹果手机(iPhone)系统升级到IOS16.1后,发现连接WiFi、热点总是经常自动(随机)断开
    【你不知道的javascript上】1.第二章 词法作用域eval、new Function、with
    信息学奥赛一本通:1171:大整数的因子
    linux中git的使用
  • 原文地址:https://blog.csdn.net/djydjy3333/article/details/126175315