logo

5.22 计算机专业的爽了,彻底爽了

作者
Modified on
Reading time
9 分钟阅读:..评论:..

大家好,我是白露啊。

以下内容建议大家“全文背诵“,因为计算机专业的彻底“爽了”,是计算机行业的**“新圣经”!**


都说计算机专业的毕业生,一门技能走遍天下,哪怕是出门倒垃圾,风都绕道走

招聘会上,大厂、国企、外企争相抢人,老板们为了讨好我们计算机专业出身的职工,不仅给安排单独的豪华办公室和住宿,甚至还得考虑我们的单身问题,分分钟介绍个单身漂亮的女同事做室友。

不愿意呢?没关系,公司豪掷五星级酒店包月,弹性工作六小时,双休,还能居家办公两天

工作环境堪比天堂,缴纳最高比例六险二金,还有股票分红。

甚至连严寒酷暑天里,我们也可以申请带薪病假,从来不需风吹日晒。

每当我回家,哪怕是向来严肃古板的父亲,在酒桌上谈起我这个计算机专业毕业生身份时,那露出来的骄傲神情让人动容。

而母亲也仿佛年轻了几分,亲戚家小孩更是崇拜得不得了,看我的眼神充满了羡慕和敬仰

即使抛开这些待遇和优厚福利不讲,社会地位也无可争议。

职业冠以“工程师”的名号,国家的高精尖人才,整个社会都寄予厚望。

在多年后的同学聚会上,大家都是事业有成,家庭和睦,重温旧时大学生活,选择计算机专业无疑是我们最自豪的决定


当我看到上面内容的时候,网友的评论也让我看懵了,人才啊!

这被同学称为,计算机专业的“新圣经”:

白露想说,每个职业都有它的酸甜苦辣,计算机行业即便有高薪高待遇,可也充满了不断学习、加班、压力的挑战,而且高薪的也只是少数。

所以,无论你选择了什么职业,什么专业,都不要灰心。

生活就是这样,有阳光也有阴影,关键是要坚持下去,找到自己热爱的方向,不畏艰难,努力前行。

记住,在任何岗位上,只要你勇敢面对,坚持努力,所有的付出最终都会得到回报。加油!

现在,还没有拿到offer的同学,可以看看一次国企的面试题目了,已经稳定的同学,可以直接跳转最后,有惊喜哦~

面试圣经

面试官: 你好,欢迎来到腾讯云后台开发的面试。首先,谈谈你对hash底层数据结构的理解。

求职者: Hash通常是通过哈希表来实现的,它是一个数组结构,数组中每个位置叫做一个槽位,每个槽位对应一个或多个键值对。哈希表通过哈希函数将键映射到槽位中,如果多个键映射到同一个槽位时,会产生冲突,解决冲突的方法有链地址法、开放地址法等。

面试官: 讲讲Java类加载的过程吧,以及类加载时类加载器是如何选择的?

求职者: Java的类加载过程分为加载(Loading)、链接(Linking)和初始化(Initialization)。加载是指查找字节流并创建类对象,链接分为验证、准备和解析三个阶段,初始化则是执行类构造器。类加载器的选择遵循双亲委派模型,首先使用父加载器尝试加载,如果父加载器无法完成加载任务,子加载器才会尝试加载。

面试官: 双亲委派的好处是什么?

求职者: 双亲委派模型的好处是确保Java核心库的类型安全,防止核心API被篡改,同时也避免了类的重复加载,保证了使用的是同一份类文件,有利于相同类的统一管理。

面试官: 那在什么场景下需要自定义类加载器?

求职者: 自定义类加载器通常用于需要特殊加载方式的场合,如从非标准来源加载类(例如网络,加密文件),或者需要对类进行特殊处理(如数据解析,动态代理)时。比如,应用服务器通常会为每个部署的应用程序使用一个独立的类加载器,以实现类隔离和热部署。

面试官: JVM中比较重要的参数有哪些?

求职者: JVM中比较重要的参数包括堆的最小值(-Xms),堆的最大值(-Xmx),新生代和老年代的比例(-XX:NewRatio),线程栈的大小(-Xss),以及GC算法选择参数(如-XX:+UseG1GC)等。

面试官: 从实现API的角度来说,用Java舒服些还是Golang?

求职者: 这取决于具体的应用场景。Java有着成熟的生态和强大的库支持,对于需要大量依赖和库的复杂API实现很有优势。而Golang在并发处理和简单的服务实现方面比较舒服,因为它的简洁性和内建的并发支持。Golang的map不是并发安全的,如果需要在多个goroutine中同时读写map,需要使用并发原语,如sync.Mutex进行同步。而Java中的HashMap也不是并发安全的,可以使用ConcurrentHashMap来支持并发访问。

面试官: 你对Golang协程的理解是什么?

求职者: Golang的协程,也就是goroutine,是一种轻量级的线程,由Go运行时管理。goroutine在用户态中执行,它们使用非常少的内存,并且可以创建数以万计的goroutine而不会给系统带来重大的负担。对于用户态协程独占的数据,我们可以使用channel来进行数据的交换,或者使用sync包中的原语(如Mutex,WaitGroup)来保证并发安全。

面试官: 读一个空channel会有什么问题?如果channel被关闭了再去读呢?

求职者: 读一个空的channel会导致goroutine阻塞,直到有值被发送到channel。如果channel已经关闭,再去读取不会阻塞,会立即返回一个零值。对于有缓存的channel,如果缓存中有值,读操作会返回缓存中的值,否则返回零值。读取已关闭的空channel不会引起panic,而是会一直返回零值。

面试官: 讲讲TCP三次握手的步骤吧,以及TCP对序列号做了哪些校验?

求职者: TCP三次握手的步骤包括:第一步,客户端发送一个带有SYN标志的TCP包到服务器以开始连接;第二步,服务器回应一个带有SYN/ACK标志的TCP包以确认连接;第三步,客户端发送一个带有ACK标志的TCP包作为响应,完成握手。TCP会对序列号进行校验,确保数据包的顺序和完整性,避免数据重复或丢失。

面试官: 那么,syn flood攻击怎么规避?

求职者: syn flood攻击是一种拒绝服务攻击,攻击者发送大量的SYN包但不完成握手过程。为了规避syn flood,可以使用SYN cookies技术,它不需要为半开连接分配资源,而是通过编码连接信息在SYN/ACK包的序列号中。这样即使不收到最终的ACK包,服务器也不会分配资源给这个连接。SYN cookies不会增加握手次数,只是在序列号的生成方式上做了特殊处理。

面试官: 谈谈HTTPS和其双向认证,以及中间人攻击的防护措施。

求职者: HTTPS是在HTTP上添加了SSL/TLS加密层,用于加密客户端和服务器之间的通信。双向认证是在标准的HTTPS握手过程中,不仅服务器需要提供证书给客户端验证,客户端也需要提供证书给服务器验证。对于中间人攻击的防护,通常依赖于证书的可信验证机制,如CA签发的证书和证书撤销列表(CRL),以及证书透明度(CT)等。

面试官: 那么QUIC和WebSocket?

求职者: QUIC是一种基于UDP的多路复用传输协议,它提供了比TCP更低的延迟,支持加密和流控制。WebSocket则是一种在TCP连接上进行全双工通信的协议,它允许客户端和服务器之间保持持久连接,进行实时数据交换。

面试官: TCP keepalive的实现是怎样的?

求职者: TCP keepalive是TCP协议中的一个选项,它可以通过发送保活探测包来检测对端是否仍然可达。它是由协议本身提供的,可以通过设置socket选项来启用。

面试官: 最后,谈谈MySQL的调优思路,为什么要少用数据库join,以及联合索引和回表的相关问题。

求职者: MySQL调优的思路包括优化查询语句、选择合适的索引、合理分配内存资源等。在有些情况下,过多使用数据库join可能会导致性能问题,特别是在涉及大量数据和复杂查询时,join操作可能很耗时。在业务层进行手动join可以利用应用逻辑的特点进行优化,有时能够提高效率。

联合索引要注意索引列的顺序,它会影响索引的使用效率。MySQL回表发生在使用二级索引查询时,如果查询的列不全在索引中,InnoDB需要通过索引找到行的主键,然后再回到主索引去取得完整的行数据。当查询只需要索引中的字段时,InnoDB可以避免回表,直接返回索引中的值。

面试官: 那么,请你现场手撕一个单词搜索的代码。

求职者: 因为时间关系,这里给出单词搜索问题的大致思路。我们可以使用DFS(深度优先搜索)和回溯的方法来实现单词搜索。首先,遍历二维网格的每一个点作为起点,然后从这个点开始,沿着上下左右四个方向进行搜索,看是否能够找到匹配的单词。在搜索的过程中,我们需要记录已经访问过的位置,以避免重复访问。

面试官: 很好,今天的面试就到这里,感谢你的参与。