2024年1月

前言

写在前面的是关于自己的一点介绍,21年本科毕业,学的是计算机科学与技术专业,到现在工作(实习)也有两三年了。自己本身对编程和开发是有兴趣的,同时也对项目管理、团队建设方面有兴趣。

目前有两段工作经历,都是在一线当开发大头兵,职级倒是随着跳槽而有所上升。做过从0-1的SaaS、PaaS的自研项目,也做过多租户的定制化开发项目,还有过半年的 PM 的经历...这些都让我有了一些关于工作上的感悟。现在简单总结一下,拿出来和大家做分享交流。

下面主要从工作的方式方法、构建知识体系、尽早规划职业这三个大的方面展开。文章有点长,但都是自己一步步实践总结得来的,有写得不好的地方,还希望大家多包涵。


一、工作方式方法

在企业上班/打工的这一根本前提,决定了我们是企业的劳动力这个最大的基本盘。

所以既然是工作,那么就可以有一些工作上的方式方法值得总结和分享。

想要自己创业或者考公/考编,或者做自由职业的朋友可以绕道了,可能这篇文章对你的帮助不是很大。

1.1先尽人事

  • 拿出积极的态度:
    首先需要自己努力去解决问题,其次包括调动资源、团队协助,最好要让领导/同事知晓你的情况。

  • 摆烂并不可取,劳动是用来换取报酬的。
    如果平时的工作表现/绩效过不去,那么将可能会直接影响到我们的收入。

  • 对于工作量的估算要留有余地
    。学会平衡别人的预期,如果 3 天内能完成,那最好回复一个星期:总有别的事情会打扰你。

  • 遵守基本的职业道德:
    如果你负责的服务出现故障或发现一个严重的 bug ,作为开发我们应该马上对其进行修复/解决。

  • 少一些牢骚和抱怨
    :面对难题或者挑战时,更多地应该思考可行的解决方案,并做好与干系人的沟通和反馈。

  • 工作里对事不对人
    :我们需要推进的是项目,是一件件具体的事情,聚焦于如何解决问题,而不是和人做无效拉扯。

做好上面这些,假如是对于刚毕业的我来说可能并不容易,但过了两年自己开始负责项目了以后,我就能慢慢理解并适应了。

1.2关注个人成长

人对于企业没有100%的忠诚度,规章制度才是可靠的。

所以我们可以有意识地提炼日常工作成果,
形成自己的个人源码库和工具库、解决某类问题的通用系统体系结构、甚至进化为框架。

众所周知对软件开发人员而言,有、无经验的一个显著区别是:新手无论完成什么开发任务都从头开始,而有经验的开发往往通过重组自己的可复用模块、类库来解决问题。

这并不是说所有可复用的东西都必须自己实现,
别人成熟的、通过测试的成果也可以收集、整理到自己的知识库中。

1.3work&life balance

工作与生活的平衡,这是个老生常谈的话题。

实际程序员们可能很难做到:总有一些会议拉上你去 battle,总有一些线上的 bug 困扰着你,总会有领导安排的其它事情让你分身乏力...还有很多。
工作是为了更好的生活这个主旨不会变,
所以我也有自己的一些想法:

  • 拒绝无效加班。
    注重上班8个小时内的工作效率,即使有紧急任务,也不要自己一个人默默加班,而是看团队安排。
  • 健康的生活方式。
    不抽烟、不喝酒、不熬夜,不吃太饱,中午尽量休息 30-60 mins,也可以适当健身锻炼锻炼身体。
  • 合理化解压力。
    寻求家人/伴侣的陪伴和支持,吃完饭一起到楼下散散步溜溜弯,始终要有良好的心态去化解工作上的压力。
  • 有点兴趣爱好。
    周末爬爬山、去周边城市旅旅游、和家人/伴侣一起包顿饺子...都可以让我们的生活充满更多乐趣。


二、构建知识体系

知识体系是系统化的知识,具有连续性的特点,反映了一个人经过学习后所拥有的知识构成情况与结合方式。如果一个开发人员在1、2年内都没有更新过自己的知识,那么他可能已经不再属于这个行业了。

2.1夯实基础

万层高楼平地起,基础的扎实程度,可以决定开发人员在技术的道路上能走多远。

一个开发无论工作了多少年,越是到后面就越能体会,
再高级的东西拆解后,就是基础知识。

我自己是在工作中切实地感受到了基础的重要性,在夯实基础方面总结了以下几点:

  • Java 最基本概念,包括类、接口和抽象类、方法和类属性
  • 面向对象的思想,继承、封装、多态的运用
  • Java 的集合、其它数据结构、常用工具类,Stream 流
  • Spring 框架的 AOP、IOC 和 Bean 的原理与应用
  • 编程思想的培养,代码与业务的结合,积累解决问题的经验等等
  • ......

2.2抽象思维

抽象思维能够超越感官直接感知信息,通过对事物的本质属性和规律的把握,使人们在认识活动中获得更深层次的知识。

程序员如何培养抽象思维?在这里我也分享一下自己的理解:

  • 多阅读优秀的代码,多思考本质和原因,多通过实践来检验
    写出可阅读的、简洁易懂、可维护的代码,应该是程序员在工作中都需要追求的。在实现业务的时候,通过借助模仿优秀的开源实现,学习他人在提高代码效率、逻辑思维、处理高并发等方面是怎么做的。

  • 学会总结复盘,从中抽取有价值的经验,将成长记录下来
    复盘的内容,可以是一次线上 bug 的处理过程,可以是一次代码重构优化的过程,也可以是对一个中间件的新认识等等。复盘不是问责也不是甩锅,而是聚焦于好和不好,知其然再知其所以然,同时避免重蹈覆辙。

    不是所有人都愿意直面自己的缺点和不足
    ,我自己最开始也不明白复盘有什么用处,觉得对领导和业务能有交代就行。但随着自己做过的项目多了起来,受到身边优秀同事的影响也在日益增多,我才明白复盘是可以让人迅速成长的不二法宝。

  • 有意识地站在更高的角度去看待问题,可能会得到不一样的答案
    作为一线开发我们更多关注的,可能是接口的参数和实现逻辑,数据库字段的设计,中间件的使用,异常的处理等实际编码问题;

    而你的 TeamLeader 可能关注的是项目的高可用,处理高并发的性能,硬件资源的成本,服务挂了怎么降低对业务的影响等;

    部门的总监则可能在考虑这个项目要不要做二期三期?对业务方有什么价值?能带来多少新用户?让谁来负责后续的运营等。

2.3广度与深度

我认为广度和深度在每个阶段的侧重点可能有所不同:

初/中级可以先从广度出发,多见识一些主流技术或者解决方案,这样在面对业务的时候可以更从容地进行设计,也能更清楚自己 CURD 的目的是什么。

高级/资深可能就要精通某一或者某几方面的通用架构/解决方案了,同时对于负责的业务有深刻的认识,可能也要负责团队的建设,从更广阔的视角去思考问题。

但其实无论是深度还是广度,都是可以遵循:
先掌握基础结构,然后熟悉基本使用,最后输出解决方案。


三、尽早规划职业

我是在工作一年半左右慢慢有了对未来进行职业规划的想法,因为时间会向前走,人也会渐渐地成长。对于未来想要什么,可以慢慢给自己多找找方向去尝试。

尽管
我们的工作很可能对于改变这个世界没有多大意义
,但还是可以在每天的工作中用自己的方式创造价值。

3.1市场现状

首先,最重要的是目前的市场趋于饱和。

2010-2020 这十年,互联网发展如火如荼,各种公司如雨后春笋般冒出来,那时候招聘需求量大,互联网就业市场一片欣欣向荣。

而现在没有了当年的辉煌,
很多互联网公司业务发展停滞
,同时经过前面多年的发展,
产品架构已经成熟稳定
,不再需要这么多的程序员,势必要进行结构优化,那优化的对象自然是性价比低的人群。

其次,IT互联网行业高薪的宣传又吸引了一大批年轻人跑步进场,需求变少的情况下人又变多,内卷就这么产生了。高学历的人才多了很多,所谓学历贬值的论调在这几年一直都有出现。

3.2如何破局

让我们透过现象看本质:IT互联网行业的特殊性在于
产出是可迭代的
。这个行业程序员的产出就是软件&代码,而这个东西就是可以不断的迭代的。

分析了上面的原因,就有针对性了。软件代码这些东西是可迭代的,但
有些东西是没法复制和迭代的
:像是
沟通协调能力、解决问题能力、规划组织能力、管理能力和人脉资源
等等。这些其实就是我们经常说的
软实力
,这些能力才是越久越吃香。

这些能力不仅可以在日常工作中有意识的积累,也可以通过考取相关的证书来掌握理论知识,比如:软考高项(信息系统项目管理师、系统架构师)、PMP认证、阿里云/华为云高级认证等。

打开认知的局限,不只着眼于手里掌握的技术,拓展自己职业的综合能力,明白不是只有靠技术才能活下去,才能更好地“破局”。


四、文章小结

文章最后,我还有一些想说的。的确,技术逐渐会变得越来越“廉价”,不再是必须要工作多年的大佬才能驾驭的高级东西。

这里面有个很重要的原因,就是
开源的力量
。大家可以想一想自己参与的一些项目,用到了多少开源的东西?以一个典型的后端项目为例,可能涉及到了 MySQL、Redis、ElasticSearch、RocketMQ、Nginx、SprintBoot、Jenkins、CI/CD、Docker......

程序员要做的就是根据业务需求,把上面那一堆组件按照规则合理地堆在一起。
一般就是 Nginx 负载均衡,Spring Boot/Cloud 写后端业务逻辑,Redis 做缓存,MySQL、ES、MongoDB 做数据存储,OSS/COS 做云对象存储,RocketMQ/Kafka 做消息队列,最后进行 CI/CD 操作塞到 Docker 里面部署运行。现在绝大多数的功能,开源组件都能提供,再加上现在是云的时代,各种
服务都上云
了,那么问题就更简单了。

既然我们身处在这个行业,那么就要做好持续学习的准备,不断打怪升级,锻炼综合能力,做到让经验随着年龄的增长成真正的正比。

毕竟,所有平凡的日子加起来,就将汇集成为你的一生。

背景

考虑到现有业务很多依赖于
MQ的方式进行,这种方式需要依赖于MQ,发送消息到mq和消费mq消息时需要了解mq消息结构进行相应处理;

对于后续对同样的事件做其他处理的人如不能提前了解到已有相应消息发到了mq就得再发一次消息到mq等。

图1.1 消息中间件

现需要考虑在不依赖于Mq的形式下如何更优雅地实现异步任务处理!!!

一.
消息任务

1.1 现有轮询方式

轮询:针对每一个业务记录一张轮询中间表,通过轮询扫描消费。

优点:

1.
时间性把控粒度高。

2.
每个业务彼此分离,互不干涉。

缺点:

1.
每次创建业务都要建立一张属于自己的轮询表,也要建立一个新的轮询配置。

2.
资源消耗大。

3.
研发效率低。

1.
2优化方式

模拟
RabbitMq的ACK方式建立一张共性表解决通用性业务的消息体存储,共性化业务通用一个轮询。

模拟
RabbitMq的ACK模式,使用轮询的方式替代mq的消息发送机制。制定专属表字段Table_Name模拟RabbitMq的RoutingKey。

每个业务处理通过Table_Name方式实现接口进行派发处理。每个实现了轮询逻辑派发接口的类即可以认为是一个队列。

以这种方式可以有效的实现消息的异步处理。

优点:

1.
代码规范化,每个服务中心只需要建立集中的一个轮询业务;

2.
符合开闭原则,每增加一个轮询处理只要多实现一个接口类即可;

3.可以减少数据库资源的消耗;

4.减少无用代码的增加,提高开发效率。

缺点:

1.由于数据量的增加,轮询压力增大,对特殊业务的轮询时间性无法针对性的把控,需要建立特殊业务轮询处理(增加轮询)。

二.
演变模型

2.1演化方向:模型由图1.2 ——》 图1.3


1.2 RabbitMQ

图1.3 定时任务模拟图

三.
ACK
模式

3.1什么是ack模式?

RabbitMQ 的 ACK 模式是指消息确认机制,即消费者消费消息后需要向 RabbitMQ 服务器发送一个 ACK(acknowledgement)信号来告诉服务器该消息已经被处理。

ACK 模式主要有以下两种:

1.自动确认模式(autoAck)

在自动确认模式下,消费者在收到消息后会立即向
RabbitMQ 服务器发送一个 ACK 信号,表示该消息已经被消费。

这种模式适用于对于消息的可靠性要求不高的场景,比如日志处理等。

2.手动确认模式(manualAck)

手动确认模式下,消费者需要在处理完消息后,主动向
RabbitMQ 服务器发送 ACK 信号。

如果消费者没有发送 ACK 信号,RabbitMQ 认为该消息没有被正确处理,并将该消息重新分发给其他消费者。

此外,在手动确认模式下,如果消费者在处理消息时出现异常,可以通过拒绝消息(NACK)来告诉 RabbitMQ 服务器该消息不能被处理,

此时 RabbitMQ 将会将该消息重新分发给其他消费者或保存到死信队列中。

四.
表结构

4.1建立合适的表结构

1.
Uid,table_name,msg,remark,ack

2.
Hisid,Uid,table_name,msg,remark,ack (历史表,用于记录处理过的消息)

(表名称和字段名称可根据业务自行命名,以上数据结构供参考,可自行根据业务外拓字段)

五.
消息体

1.规范化msg的输入形式。可以走切面或者监听的方式异步记录。写一个公用方法写入(特殊业务可调用该方法写入)。

2.规范化Table_Name字段:采用驼峰名称,代表哪个表写进来的数据。

3.规范化ack,默认设置为0;消费完成,写入2表(历史表)。

如有特殊要处理的,可以增加业务逻辑通过
ack模式处理,这里ack默认值为0;

默认轮询处理失败一次ack自增1 。通用轮询方法只扫ack默认为0或者1的。

Ack不等于0,1的,通过二次轮询,第二个特殊轮询业务处理。(减少通用轮询的压力,避免造成轮询卡单。消息消费延缓等问题)。

如有特殊业务申请对应轮询:需要申请ack默认值处理。比如特殊业务1,ack值设置100。(0-9不建议,给默认通用轮询留下可用空间;

每次申请的特殊轮询ack默认在原先基础最大值上增加100,每次建立轮询通过这个方案执行的ack都要走申请,避免ack重复)。

六.
实现类图

方案一:


1.4 类图

方案二:


1.5 类图

以上类图开发自行根据习惯可自行选用哪种模式。
如有更好的方式请留言指教,以上供参考。

背景

来了个需求,需要从某个线上es库查询一些数据出来并进行大屏展示。问需求方有没有开发环境的es库,答:没有,说要不直连他们的线上库。

后面想想也行吧,业务方都这么说了,结果开网络的流程被打回了,理由是网络隔离。

于是,只能采用从线上es库导出文件,然后在开发环境原样搭建这么一个es库并导入的办法。

了解到线上es库,版本是5.4.3,准备在开发环境恢复的那个索引的数据量大概是有20来个g。

我们是使用elasticdump来进行数据导入导出的,数据量小的时候用这个还是可以,但20 来个g这种,导入的过程还是有一些坑的,当时一开始没加一些参数,搞了一晚上都没弄完,后面研究了下,速度才快了,所以简单记录下。

开发环境es搭建

简单搭建

先找到了官方的5.4.3版本的文档。

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/getting-started.html

首先是搭建,参考官方:
https://www.elastic.co/guide/en/elasticsearch/reference/5.4/zip-targz.html

我是用tar包这种方式:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.3.tar.gz
sha1sum elasticsearch-5.4.3.tar.gz 
tar -xzf elasticsearch-5.4.3.tar.gz
cd elasticsearch-5.4.3/ 

./bin/elasticsearch

结果启动报错:

[root@VM-0-6-centos elasticsearch-5.4.3]# ./bin/elasticsearch
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N

网上查了下,把内存改了下,我的云主机内存小,大家看着改吧:

[root@VM-0-6-centos elasticsearch-5.4.3]# vim config/jvm.options 
-Xms256m
-Xmx256m

再启动,再报错:

Caused by: java.lang.RuntimeException: can not run elasticsearch as root

创建个用户、用户组吧:

// --先看看有没有es的相关用户存在
cat /etc/passwd

groupadd elasticsearch
useradd elasticsearch -g elasticsearch
chown -R elasticsearch:elasticsearch /opt/upload/elasticsearch-5.4.3

然后可以单开个shell
su elasticsearch
cd /opt/upload/elasticsearch-5.4.3
bin/elasticsearch 

这样就前台启动起来了。默认的日志就在es安装目录下:

/opt/upload/elasticsearch-5.4.3/logs/elasticsearch.log
curl -X GET "localhost:9200/?pretty"

后台运行:

后台运行并记录pid到pid file:
./bin/elasticsearch -d -p pid

停止:

kill `cat pid`

关于配置

网上很多安装教程会涉及把这两个配置相关的目录,改成es用户,如这种:

chown elasticsearch:elasticsearch -R /var/log/elasticsearch

但这个路径还是要根据实际来,这个path.logs/path.data在config/elasticsearch.yml 中配置,我们这里没配置,所以就在安装目录下,所以不需要单独去chown修改权限。

除了这个之外,还有很多配置项,开发环境可以无所谓,线上还是得每个参数好好斟酌。

这些参数配置的文档:

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/important-settings.html#path-settings

还有很多重要的配置:

image-20240128122666666546

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/setting-system-settings.html

样例数据导入

在看官网时,发现还有样例数据辅助学习,试了下,还是不错的。

image-20240128122828731

原地址已经404了,在网上找了下:

https://blog.csdn.net/qq_20667511/article/details/109614359

https://github.com/elastic/elasticsearch/blob/7.5/docs/src/test/resources/accounts.json

https://github.com/elastic/elasticsearch/issues/88146

数据导入:

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/gs-exploring-data.html

curl -H "Content-Type: application/json" -XPOST 'localhost:9200/bank/account/_bulk?pretty&refresh' --data-binary "@accounts.json"
curl 'localhost:9200/_cat/indices?v'

esdump导入数据

elasticsearch-dump安装

https://github.com/elasticsearch-dump/elasticsearch-dump

这个是用js写的,我这边是先在本地虚拟机用npm安装这个module(有网络),然后把这个模块拷贝到内网es服务器上去跑导入本地文件的;当然它也支持从一个es/文件导出,直接导入到另一个es/文件。

反正就是目标和源都可以是文件和es服务。

image-20240128123738614

npm install elasticdump -g
or 安装指定版本的module
npm i elasticdump@6.104.1
https://www.npmjs.com/package/elasticdump/v/6.104.1?activeTab=readme

找到elasticdump这个node,打tar包,拷贝到无网络的服务器上

ll /root/upload/node-v12.3.0-linux-x64/lib/node_modules
tar -cvf elasticdump.tar elasticdump

目标服务器上解压:

/root/upload/node-v16.20.2-linux-x64/lib/node_modules
此时,执行elasticdump不生效,找不到,所以要在path下建立软连接:
cd /root/upload/node-v16.20.2-linux-x64/bin
ln -s ../lib/node_modules/elasticdump/bin/elasticdump elasticdump
ln -s ../lib/node_modules/elasticdump/bin/multielasticdump multielasticdump

导入(慢)

我是从文件导入新搭建的es服务。根据导出语句写导入语句即可:

注意,数据量大的时候,下面语句比较慢,看完全文再操作。

elasticdump   --input=/root/upload/root/esbackup/20231204/base20231204/common_mapping.json    --output=http://localhost:9200/base20231204  --type=mapping

elasticdump   --input=/root/upload/root/esbackup/20231204/base20231204/common_data.json    --output=http://localhost:9200/base20231204  --type=data

elasticdump   --input=/root/upload/root/esbackup/20231204/base20231204/data_mapping.json    --output=http://localhost:9200/data  --type=mapping

后台导入:

nohup elasticdump   --input=/root/upload/root/esbackup/20231204/base20231204/data_data.json    --output=http://localhost:9200/data  --type=data 2>&1 &

导入(快)

后面的语句:

nohup elasticdump --input=/root/upload/root/esbackup/20231204/history20231204/common_data.json --output=http://localhost:9200/data20231204 --type=data --noRefresh --limit 10000 --support-big-int --fileSize 1gb 2>&1 &

主要是增加了--noRefresh,这个才是主要的。

参数的解释:

image-20240128125239503

开了这个选项后,导入快多了,之前是一晚上都搞不完。

kibana

顺便记录下kibana的安装。

https://www.elastic.co/guide/en/kibana/5.4/targz.html

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.3-linux-x86_64.tar.gz
sha1sum kibana-5.4.3-linux-x86_64.tar.gz 
tar -xzf kibana-5.4.3-linux-x86_64.tar.gz
cd kibana/ 

启动前改下配置:

 cd config/
 vim kibana.yml
 elasticsearch.url: "http://localhost:9200"
 server.host: 0.0.0.0

其他

本来一开始规划是后端对接es,给前端提供接口;后来计划是前端直接对接es(前端为了避免跨域,还是通过后端nginx转发es请求到es服务器)。

当时本来还研究了下java client的版本兼容,后面就没弄了。

https://www.elastic.co/guide/en/elasticsearch/client/index.html

客户端这块,Java Client只支持7.0后版本的服务端;

Java Rest Client这块,5.6版本的高级客户端,不支持es服务端5.4.3版本,所以,如果要用的话,都只能使用5.4或5.5或5.6的低级客户端。

image-20231207666666014646

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high-compatibility.html

参考链接

https://www.elastic.co/guide/en/elastic-stack/5.4/index.html
https://www.elastic.co/guide/en/elastic-stack/5.4/elastic-stack.html
https://www.elastic.co/guide/en/elasticsearch/reference/5.4/getting-started.html
https://www.elastic.co/guide/en/kibana/5.4/introduction.html

人工智能中最引人入胜的话题莫过于深度强化学习 (Deep Reinforcement Learning) 了,我们在 2022 年 12 月 5 日开启了《深度强化学习课程 v2.0》的课程学习,有来自全球众多学员们的参加。课程已经完成更新,并且发布在 Hugging Face 官网
https://hf.co/learn/deep-rl-course/

感谢人邮老师的提议和社区的支持,我们目前完成了这个课程的中文翻译和出版计划。

我们计划在本公众号连载,让社区的成员们先睹为快,与此同时广泛的向社区成员们征集对中文课程内容的建议和 Bug 报告。

今天连载课程的第一章:深度强化学习简介,你可以在阅读原文里找到我们的协作链接并注册账号提出评论建议。


如果有任何关于本书中文内容的建议和纠错,欢迎来这里使用评论的方式提出:
https://kdocs.cn/l/ctpzByCt5qWH

人生逐梦正当时

我本不是天赋异禀的人,在茫茫人海之中甚至有些平庸,可我的人生不是潦草诗,这一次的我想为自己改写航线。

时节如流,奋斗以恒

回忆起大一的时候,在学长的带领下,我加入了学院的网络安全协会,在这一年将 Linux 操作系统做了一个基础的学习,为以后的课程打下了基础。我并不是一个聪明的孩子,所以只能努力付出,坚信自己能够在专业能力上取得成就。课余时间跟着社团一起参加有关计算机类的比赛和志愿者活动。临近大一期末,学长学姐们就要去实习了,社团开始竞职,我通过自己的努力竞争到了社团会长职位,想为网络安全协会未来的发展贡献出自己的绵薄之力!

步入大二,这一年专业课就开始慢慢拥了过来,值得庆幸的是我选择了自己感兴趣的专业,不然在面对繁忙的课程时就会显得有心无力。为了自己的大学生活变得充实,我参加了学院的比赛训练队,想进一步学习专业知识,功夫不负有心人,在自己努力和老师的提携下我成为了专业中名列前茅的学生,在老师的精心指导下获得了2021年华为ICT云赛道国赛三等奖,全国职业院校技能大赛云计算赛项省赛三等奖以及其他专业技能证书。

以我之力,追我所愿

受到疫情的影响,原本四月份的校招只能延期举行,对于今年实习的我们来说,就业之路显得格外曲折,心理压力也在无形中增加了许多。我和同学们开始在招聘软件上投递简历,但是好多公司都要求线下面试,我只能和公司的HR商量转为线上或者等疫情好转后参加线下面试,同时投递的简历中也有好几份石沉大海,加上自己的学历的确没什么竞争力,顿时让我无能为力,感到惊慌失措。

疫情稳定之后,期待已久的校招也开始了,开启了我人生中的另一个转折点——面试。经过校招和自己提前约定好的公司线下面试之后,双方都没达成合意。在自己的努力和指导老师的推荐下,我又进行了几轮面试,最终面试到了自己心仪的公司,也就是现在所实习的公司。

在该公司的面试过程中进行了两轮考核。首先是HR的面试,先做简单的自我介绍,然后根据简历的内容提问,随后问我对面试职位的是否了解,有没有过类似的经验之类等。其次就是公司负责项目的工程师面试,也是先让进行自我介绍,对自己优缺点的认知,还有一些涉及到计算机网络专业知识的问题和入职后对自己未来的规划。

道阻且长,行则将至

在开始实习之前,我多少有些心虚。因为我身边的许多朋友都有过假期打工的经历,而这次的实习却是我的人生第一次。作为一名进入全新工作环境的新员工来说,尽管在前期面试准备中,已经对公司有了一些初步的了解,但进入公司的第一天,还是对周围的环境感到好奇和陌生。然而这种紧张情绪在公司领导、同事及企业文化的关怀、帮助和感染下很快就烟消云散了。

然而好景不长,实习不到一个月,疫情再次席卷而来,兰州接连出现感染者,公司处于安全,我们只好居家办公。可是对于我们公司来说,压力无限增大,因为工作性质的原因,居家办公属实没办法实现。居家期间公司也没安排什么学习,我开始和学弟学妹们联系参加第十五届全国三维数字设计大赛,居家期间感觉到防疫人员和志愿者的不易,设计了一款防疫小白机器人,主要功能有三点:一是采用5G通信技术实现测温、远程对讲、语音播报、佩戴口罩人脸识别等功能。二是消杀结构是水化雾的过程,通过水泵控制系统核心为单片机控制系统。三是医废清扫结构,采用传输带清扫机构,电动机驱动刷。将地面上未清理的垃圾进行清扫,省去了人工清理避免接触。经过了四个月初赛和省赛的拼搏,最终获得了省级特等奖,正在冲击国赛。

终于,在经历了差不多一个月的时间后,兰州疫情解除,接到公司发来的复工通知,心情激动的无法言喻,之后的日常就是积极配合疫情防控要求按时做核酸,上下班两点一线,保护好自己。每天在规定的时间上下班,上班期间要认真准时地完成自己的工作任务,对待工作任务不能敷衍了事,产生一丝懈怠。我们肩上扛着的责任,不再只是对自己了,而是对一个公司,所以凡事都要小心谨慎。尽管每天的工作很繁琐,但是不能有一点马虎,一个小小的错误不但会给自己带来麻烦,更会给公司带来巨大的损失。

但是,完全没有预料到两个多月后,这场噩梦又开始了,再次被告知居家。这次公司在驻场的地方安排了几位负责值班的同事,原本想着这波疫情很快就会过去,却没想到一直封到了现在,已经一个多月了,虽然基本的吃住问题能够得以解决,可是他们没办法跟家人团聚,替他们感到心酸。公司的运维部门为我们居家的同事组织了为期半个月的学习培训,每天都会分配不一样的学习任务,如在Centos和Ubuntu操作系统上配置网络、安装Nginx、Tomacat,升级Openssh和Openssl,还有平时运维期间遇到的问题,让我们尝试着如何自己动手去解决问题。紧接着在培训了半个月后进行了考核,检验了这半个月以来的学习成果,这半个月的培训和考核,使我受益匪浅。

之后,副总监让我先跟着测试,因为暂时去不了办公点,工作没有办法进行。我只好开始接手新的任务,每天早上九点和公司值班的同事一起进行电话会议,内外配合对公司负责的项目版本进行测试,测试过程中电话不能挂断,除非你有其他重要的事情。因为疫情导致开展工作的不便、项目进度的延期、同事不能回家团聚、防控人员的辛苦等等,好想让这次疫情早点结束,望每个为疫情付出汗水的人都能够平安回家。

不忘来路,铭记初心

对于我们大学生来说毕业以后,肯定是想找一个与自己所学专业对口的岗位,不光是对自己三年一来的辛苦付出检验真正的成果的时候。还是想为对辛勤培养自己,付出了辛苦的父母和老师、学校交出一份满意的答卷!计算机知识日新月异,我们不得不以自学尽快掌握新知识,迎接一个又一个新的挑战,如果只靠在学校中学到的知识肯定是不行的。我们必须在工作中勤于动手,不断学习新知识积累经验,没有自学能力的人迟早会被企业和社会淘汰。

人际关系的处理也很关键,虽说在工作中能力必须有,但如果没有同事的合作与包容,你可能什么都做不了。在与同事相处的过程中,我觉得更重要的是放大别人的优点,缩小别人的缺点,多站在别人的立场上思考问题。

相信走到今天为止,大家也面对过很多生活上的不容易、学习上的困惑、求职上的一次次失落,但是,生活还在继续,请坚持走下去,也许自己达不到理想中的高度,可是最起码我们正在尝试改变生活现状。

我们的未来非常可期!

个人寄语:在光芒万丈之前,我们都要欣然接受眼下的难堪和不易,接受一个人的孤独和偶尔的无助,认真做好眼前的每件事,你想要的都会有。