架构师训练营总结 -20200726

用户头像
caibird1984
关注
发布于: 2020 年 07 月 25 日

本周四的课程中,老师重点讲解了数据结构及算法方面的知识。说来惭愧,做为计算机专业毕业的学生,大学阶段虽然有数据结构与算法这门课程,但是由于最终考试是开卷考试,所以从观念上就没有收到自己重视,所以虽然对链表、栈、队列等数据结构有所了解,并且大概知道这些数据结构的特性是什么,但是对于类似“时间复杂度”这样的概念就已经忘干净了。因此趁着本周的课程,重新补一遍课,至少现在面试其它公司的时候,再被问到算法复杂度、时间复杂度这些问题的时候,不会再大脑一片空白不知道所谓何物了。



可能是和就职的公司规模有关,虽然工作了这些年,实际上在面试的时候被问到算法的情况并不多,而且多数情况下算法题目也仅仅简单局限于编写一个冒泡算法这种浅尝辄止的程度,或者是做为智力测试、加分项这种不影响大局的题目出现。而且实际上就个人这些年换工作的经历来看,即使面试时会问到算法、操作系统底层、JVM特性这些看起来很底层知识的雇主,在入职以后的工作中几乎用不到算法的知识,对byte数组用左移右移再做个异或进行加密的操作就已经算挺稀有的了。所以我也一直不太明白大厂面试的时候重视算法考察的原因,之前算法训练营虽然看描述挺让人心动,但是最终还是没有报名的原因。周四的课程中老师提到面试考察算法可以认为是对思考方式或者基本功的考察,给我提供了一个看待算法面试的新思路。和高考类似,高中阶段学过的解析几何、代数、物理、化学这些知识,上了大学甚至工作以后鲜有用到。但中考、高考中包含对这些内容的考试,本质上考察的其实是学生对于这些难以掌握的知识是否能够耐心加以理解,对于学习时带来的压力、焦虑等情绪是否能够正确纾解。高中的时候我和同学们经常互相调侃高考时是自己的知识巅峰,但是毕业之后返回头来想,中考高考本质上是通过这些比较艰难且晦涩知识的学习,来选拔具有抗压能力,有耐心,有学习能力的学生继续深造。算法的学习想来也是如此,实际的工作场合需要自己编写一个算法的机会相当少。然而对于一个深入掌握各种算法及其原理的同事,通常也是合作起来靠谱、工作踏实的好伙伴。所以通过本周的学习,对于“面试造火箭,工作拧螺丝”的情况,个人有了新的理解,也希望后续能腾出些时间,好好补一补算法和数据结构的知识。希望至少通过学习让自己浮躁的心态先平静下来。



周六的课程我们首先学习了一下网络访问方面的知识,包括整体上回顾了ISO7层模型,以及每一层上工作了哪些协议。之后重点分析了一下HTTP协议,包括HTTP协议的结构,HTTP协议支持的方法,以及常用的HTTP状态码等等。这些概念在之前编写restful接口的时候就接触过,所以并不算陌生。同时目前主流的浏览器都提供开发者工具,可以针对一次访问查看所有的请求信息,其中就包括了跟踪每个响应,以及可以查看每个响应的请求、响应内容。做为WEB开发人员,几乎是每天都在和HTTP协议打交道,扎实的掌握HTTP协议应该说是日常工作的基础。最后老师提到了HTTP/2,目前这个版本我几乎没有了解过,需要在后续自己去找一下相关的资料。



NIO我个人使用的不多,只是大概了解过基底层是基于多路复用技术,在并发性上较传统IO方式可以支持更高的并发压力,同时降低对CPU、内存等计算资源的消耗。不过确实因为目前从事的工作还没有到在网络通讯层面争取性能的地步,因此只是先做一下了解,后续也需要去查找相关资料。



数据库优化层面个人比较熟悉,包括通过PreparedStatment预编译查询语句以节省编译时间,包括缓存优化的机制,包括如何分析一个查询语句的执行计划。在之前供职的一家公司大多数的优化工作都是在数据库层面进行的,包括读写分析,包括日常优化查询语句等。后来接触到的公司鲜有如此重视数据库层级优化的,可能也和缓存产品越来越成熟有关。而且随着分布式架构模式甚至微服务架构的流行,单个业务数据库承受的压力整体上越来越少,同时可以借助更多诸如缓存、队列、群集部署等方式分摊访问压力。在如今的开发场景中,数据库的角色正在逐渐从软件体系的核心组件,向结构化存储的角色转移,而缓存优先等理念的出现,以及redis等缓存产品提供的高可用特性,也正在加速这一进程。



用户头像

caibird1984

关注

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营总结-20200726