5.18 双 9 科班:实习难求,认命,总结,反思。。。
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 7 分钟
阅读:.. 评论:..
大家好,我是白露啊。
今天,我偶然刷到了一篇帖子,一位寻找实习的同学的艰辛历程,现在不得不接受实习找不到的尴尬境地。
让白露遗憾的是,这位同学看起来是很努力地在准备,但是不得不说,时间和方向弄错了,大家已经要引以为戒!我将他这段时间的经历,简单整理了一下:
- 3月开始准备,刷了一个月leetcode
- 投递华为
- 4月,还在刷题,笔试成绩不理想
- 着急了,开始投其他公司,泡池子
- 接着华为主管面挂了
- 五一过后,开始海投
- 因为八股文不熟练、没有项目经历,全都挂了
白露之前说过很多次,面试一定要有计划。
八股文+项目+算法题缺一不可!
-
对于项目,如果自己没有,一个很简单的方式,去github找一个项目!跟着文档或者视频教学走一遍就可以了。白露下个月会启动一个专栏,专门介绍一些经典项目,然后辅以一些教学文档,来帮助大家。有兴趣的小伙伴可以先加我微信提前体验。
-
对于算法题,确实可以刷leetcode,但是不要为了**刷而刷!这很重要!**数量不是目的,思想才是。
-
对于八股文,这恰恰是最简单的部分了。我之前特地开发了一个小程序,随时随地都可以刷,点击下方链接使用
正如这位楼主所展示的那样,只要我们愿意反思,愿意学习,总有一天,我们会找到属于自己的那片天空。
接下来进入正题,看一次腾讯后台开发一面的面试记录,整体来看难度不大,应该可以秒掉。
面试开始!
面试官: 你好,欢迎参加今天的腾讯云智后台开发面试。请先进行一下自我介绍。
求职者: 您好,我是一名计算机科学与技术专业的毕业生,对后端开发有浓厚的兴趣。在校期间,我参与了多个项目,涉及数据库设计、服务器端编程以及性能优化等。我熟悉多线程编程,也有使用C++和Linux进行开发的经验。期待能在腾讯云智找到提升自己技术的机会。
面试官: 好的,介绍得很不错。那么,你能说说多进程与多线程的区别吗?
求职者: 多进程和多线程都是并发执行的方式,但它们有一些本质的区别。
进程是系统进行资源分配和调度的基本单位,每个进程都有独立的地址空间,一个进程崩溃后在保护模式下不会影响到其他进程,但是进程之间的切换会有更大的开销。
线程是程序执行的最小单位,它是进程的一部分,多个线程可以共享进程的内存空间,线程之间的通信和切换成本相对较低,但一个线程崩溃可能会影响整个进程。
面试官: 很清晰。接下来,MySQL数据库中你了解的关键字有哪些?
求职者: 在MySQL数据库中,有很多关键字,比如SELECT、INSERT、UPDATE、DELETE用于基本的数据操作。WHERE用于数据的筛选,LIMIT用于限制查询结果的数量。JOIN用于连接多个表,ORDER BY用于结果排序,GROUP BY用于聚合数据。还有IN、BETWEEN、LIKE等用于特定条件的查询。
面试官: 好的,那C++11和C++98有什么区别?
求职者: C++11相比于C++98来说,带来了许多重大的改进和新特性。比如,C++11增加了自动类型推断的auto关键字,范围for循环,nullptr关键字,以及基于范围的迭代器等。它还引入了lambda表达式,提供了更强大的模板能力,包括模板别名和可变参数模板。C++11还提供了智能指针,如std::shared_ptr和std::unique_ptr,以及对并发编程的支持,包括线程库等。
面试官: 现在请你解释一下指针和引用的区别。
求职者: 指针是一个变量,它存储了另一个变量的内存地址,而引用则是一个变量的别名。指针可以被重新赋值以指向另一个不同的地址,但是引用一旦绑定到一个变量,就不能改变。指针可以有nullptr值,意味着它不指向任何东西,而引用必须初始化为一个已经存在的对象。指针的使用可能会更加复杂,因为它可以进行算术运算,但引用的使用更简单,更安全。
面试官: 内存泄漏可能是由什么原因导致的?
求职者: 内存泄漏通常是因为程序分配了内存但未能正确释放。在C++中,这通常发生在使用new关键字动态分配内存后,没有相对应的delete调用来释放内存。这可能是因为程序的逻辑错误,忘记释放内存,或者在对象生命周期结束后仍持有指向它的指针。
面试官: 那么,使用new创建一个对象和不用new创建一个对象有什么区别?
求职者: 使用new创建的对象是在堆上分配的,它的生命周期直到使用delete显式释放为止。而不用new创建的对象通常是在栈上分配的,它的生命周期随着创建它的函数或作用域结束而结束。堆上的对象需要手动管理内存,而栈上的对象则是自动管理。
面试官: 很好。那么堆和栈在内存中有什么区别?
求职者: 堆和栈是程序中两种不同的内存区域。栈是用于存储局部变量和函数调用的内存区域,它有着固定的大小,并且是由操作系统自动管理的。堆则是用于动态内存分配的区域,大小不固定,可以动态扩展,但需要程序员手动管理内存的分配和释放。
面试官: 在Linux中,你常用的命令有哪些?
求职者: 我经常使用的Linux命令包括ls用于列出目录中的文件,cd用于更改当前目录,grep用于文本搜索,ps用于查看当前运行的进程,top用于实时显示系统进程和资源占用,kill用于终止进程,chmod用于更改文件权限,以及wget和curl用于网络请求等。
面试官: 那么要查看当前系统有哪些进程,你会用什么命令?
求职者: 查看当前系统的进程,我会使用ps命令,如ps aux来查看系统中所有运行的进程及其详细信息。如果我想要实时监控进程和系统资源,我会使用top或htop命令。
面试官: 查看内存情况,你会用哪些命令?
求职者: 查看内存使用情况,我通常使用free命令,它可以显示系统中内存的总量、使用量、空闲量以及缓存的内存。另外,vmstat和top命令也可以提供内存使用的相关信息。
面试官: 最后,请介绍一下你的项目。你的项目在技术上有哪些挑战?
求职者: 我的一个项目是开发一个基于微服务架构的电商平台。技术上的挑战包括服务间的通信、数据一致性保证、以及如何在高并发场景下保持服务的可用性和稳定性。我们采用了Kubernetes来管理服务的部署和扩展,使用了RabbitMQ来处理异步消息,以及使用Redis和MySQL来存储数据。
面试官: 好的,感谢你的分享。这就结束了我们今天的面试,期待与你进一步交流。