时间过得很快,好像自己还没有做些什么,时间就已经来到了这个要说告别的节点,而很多人的人生轨迹也逐渐踏上了新的选择,考研或者说是就业,似乎是每一个同学在大三就应该去考虑的问题。我周围考研的人大概划分为以下三类:一、真正喜欢科研,适合科研,而且有能力去搞科研的;二、在当下的就业环境下,通过读研而来拔高自己学位,从而获取一个更好的敲门砖;三、畏惧社会,没有信心立刻就业,从而选择了考研继续学习的道路。这三类人就我个人的观点,显然的是第一类人热情学习,从大一到大四,都不曾荒废自己,努力自信,所以他们保研成功,成为985,211的种子选手;而第二类,也有着足够的信心去奔赴在考研的战场上,他们很早开始就着手准备,自然不会是100%的会成功,但有一点可以肯定,这样努力下来的他们是真正意义上的强大,这样的他们即便是二战,就业,也会很优秀。而第三类人恰恰是最为危险的一类,每天惶惶度日,得过且过的,既没有一个明确的信心去考研,也没有一个就业的社会心理。考研不够坚定是没有足够动力支持他们,当然,除非这里里面真的有天才,不然,很容易两头抓空。
所以,后两者里,必然会有大批的人走向社会,工作。而也有像我一样选择直接就业的人。很多人都会考虑一件事儿,我是本科生,我什么都不会,我怎么去工作?或者说,自己什么都没有学会,不够精通,面试,笔试怎么应对?甚至有不少的同学啊,还参加了很多关于面试笔试的培训,当然这些都是很正常的。
我从大一就决定好了要直接去就业,为什么呢?有很多原因,大一的时候,是觉得想早点为家庭减轻负担,有时候也会去摇摆,想着考研可以获得更好的发展,可接下来我就被自己的言行不一给折服了,我一边想着要毕业后就业,一边又不扎实自己的专业基础,整个人都没有上进心,就这样,一年,两年,转眼就大三了,没有享受过大学生活的种种,一直就是寝室,宿舍,食堂的三点生活,也没有看看外面的世界,最是枯燥的生活就这样过了三年。终于,在大四实习开始的时候,大三下学期我终于正视了这个问题。手里没技术,专业没基础,甚至连CET4都还没有过。突然间,一种慌张的感觉袭来。各种的否定自己,然后在同学的建议下,我从头开始去学习,去做项目来提高自己的能力。
话是这么说没错,但如何迈出第一步其实是很困难的。计算机科学与技术这个专业涉及到的知识广,我们跟着课程走的话,根本不能精通什么,而且,对于我们大部分人来说,一种语言乃至一个库,我们都是浅尝辄止,而且对于我们很多人来说,coding量实在是太少了。加之学校对行业流行也不会进行过多的分享,让人很难决断。我也问过很多就业的学长,有阿里的,有腾讯的,也有华为的。他们似乎都在说同一件事,投简历,面试,学习。
最初,我还有些不以为然的想,这算什么,算是经验吗?你们都是太优秀了,所以才能说出这么随意的话吧。可后来真正的动起来了,你反而发觉到了,确实是这么个道理。
我从今年三月份开始自己学习python,从基础的语法开始,也逐渐发现了全新的问题,语言学起来容易,可单独的使用就变得困难了,就如同c语言一样,里面的数据类型,分支语句,循环语句,乃至指针函数,这些你都会,可面对着一个待解决的问题,却显得很难下手。以至于我看完一整套python的学习视频,也没有多大的自信去说,我熟悉python。
暑假的时候我在网络上投了很多简历,而自己在等待简历的过程中继续学习,python,HTML......
三十多份简历抛了出去,结果呢?愿意给我笔试面试机会的仅仅只有六七份,而这六七份中,我印象最深的就是一个python脚本岗位的面试,首先是HR的电话面试,我们谈了好多,不涉及到技术本身,我也申明了自己不会什么,不熟练什么的不足,她让我等电话。
等待的期间是很煎熬的,但索性还是朝着python的方向走了下去。但是问题很明显,因为你依旧只会基本的东西。于是第二次面试来了,还是电话面试,技术面。
问:如何向一个有序数组中插入一个新的数?
我的回答就显得很苍白,我说,用insert插入就好啊,面试官沉默了一下,继续问道
问:你知道正则表达式嘛?
我直接懵逼,因为自己确实没有了解这方面的内容。,所以就是支支吾吾的。
问:那你知道模块吗?
我再次懵逼,关于python,完全没有了解那么深......
.......
面试结束了,我整个人裂开了,是这么的无能为力
然而,HR又发了笔试题是三道编程题:
一、插值
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中.
列表为[1,4,6,9,13,16,19,28,40,100]
插入的值为31
程序设计和实际输出:
我的作答是:
#第一种:
def sort(list):
list.sort()
return list
def main():
List = [1,4,6,9,13,16,19,28,40,100]
num=int(input ("插入的值为:"))
List.append(num)
last_list = sort(List)
print(last_list)
if __name__ == '__main__':
main()
#另一种:
def sort(list):
s=len(list)#通过BIF len()函数求出列表长度
for i in range(s):
for j in range(i):
if list[i]<list[j]:#题干中是顺序,则小的放在前边,若为逆序,则可以改为>实现
list[i],list[j]=list[j],list[i]#进行列表中两数的交换
return list
二、文件内容比较
有两个文本文件text1.txt和text2.txt,读取两个文本文件,将text2.txt中相对于text1.txt多余的内容写入到文本文件text3.ext中,将text1.txt中相对于text2.txt多余的内容写入到text4.txt中。
注:
Text1.txt和text2.txt中内容为C语言文本,内容比较只限于函数不包含注释部分。
如text1.txt的多余部分为:
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << End of documentation area >> DO NOT CHANGE THIS COMMENT!
*********************************************************************************************************************/
FUNC(Std_ReturnType, DcmDID_CODE) DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead(Dcm_OpStatusType OpStatus, P2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_DCMDID_APPL_VAR) ErrorCode) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */
{
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << Start of runnable implementation >> DO NOT CHANGE THIS COMMENT!
* Symbol: DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead (returns application error)
*********************************************************************************************************************/
DcmDID_TestDefines(); /* PRQA S 2987 */ /* MD_Rte_2987 */
return RTE_E_DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__E_NOT_OK;
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << End of runnable implementation >> DO NOT CHANGE THIS COMMENT!
*********************************************************************************************************************/
}
那么需要将蓝色斜体的内容写入text4.txt中。
程序设计和实际输出:
程序设计:
import re#re 模块使 Python 语言拥有全部的正则表达式功能
import sys#sys是system的缩写,用来获取操作系统和编译器的一些配置,设置及操作。如判断文件和文件夹是否存在,创建文件文件夹,获取系统版本之类的操作。
import os#os模块提供了多数操作系统的功能接口函数
import difflib#是提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面
str1=[]
str2=[]
str_both1=[]
str_both2=[]
fa=open(r"C:\Users\acer\Desktop\python测试题素材\text1.txt",'r')#读取文件text1.txt,设置成为读取
fb=open(r"C:\Users\acer\Desktop\python测试题素材\text2.txt",'r')
fc=open(r"C:\Users\acer\Desktop\python测试题素材\text3.txt",'w')#读取文件text2.txt,设置成写入
fd=open(r"C:\Users\acer\Desktop\python测试题素材\text4.txt",'w')
for line1 in fa.readlines():#readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。
str1.append(line1.replace("\n",' '))#Python replace() 方法把字符串中的 \n 替换为空格,然后用append()添加到串str1[]中
for line2 in fb.readlines():
str2.append(line2.replace("\n",' '))
for i in str1:
if i in str2:
str_both1.append(i)#将text1.txt中在text2.txt中出现的串添加到串str_both1
for j in str2:
if j in str1:
str_both2.append(j)#将text2.txt中在text1.txt中出现的串添加到串str_both2
for k in str1:
if k in str_both1:
str1.remove(k)#将text1在text2中出现的删除
for l in str2:
if l in str_both2:
str2.remove(l)#将text2在text1中出现的删除
for m in list(str1):
fc.write(m+'\n')#将差值写入文档text3.txt
for n in list(str2):
fd.write(n+'\n')#将差值写入文档text4.txt
fa.close()#关闭文件
fb.close()
fc.close()
fd.close()
其输出结果分别在压缩文件中的text3.txt文件和text4,txt文件
我的作答是:
import re#re 模块使 Python 语言拥有全部的正则表达式功能
import sys#sys是system的缩写,用来获取操作系统和编译器的一些配置,设置及操作。如判断文件和文件夹是否存在,创建文件文件夹,获取系统版本之类的操作。
import os#s模块提供了多数操作系统的功能接口函数
import difflib#是提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面
str1=[]
str2=[]
str_both1=[]
str_both2=[]
fa=open(r"C:\Users\acer\Desktop\python测试题素材\text1.txt",'r')#读取文件text1.txt,设置成为读取
fb=open(r"C:\Users\acer\Desktop\python测试题素材\text2.txt",'r')
fc=open(r"C:\Users\acer\Desktop\python测试题素材\text3.txt",'w')#读取文件text2.txt,设置成写入
fd=open(r"C:\Users\acer\Desktop\python测试题素材\text4.txt",'w')
for line1 in fa.readlines():#readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。
str1.append(line1.replace("\n",' '))#Python replace() 方法把字符串中的 \n 替换为空格,然后用append()添加到串str1[]中
for line2 in fb.readlines():
str2.append(line2.replace("\n",' '))
for i in str1:
if i in str2:
str_both1.append(i)#将text1.txt中在text2.txt中出现的串添加到串str_both1
for j in str2:
if j in str1:
str_both2.append(j)#将text2.txt中在text1.txt中出现的串添加到串str_both2
for k in str1:
if k in str_both1:
str1.remove(k)#将text1在text2中出现的删除
for l in str2:
if l in str_both2:
str2.remove(l)#将text2在text1中出现的删除
for m in list(str1):
fc.write(m+'\n')#将差值写入文档text3.txt
for n in list(str2):
fd.write(n+'\n')#将差值写入文档text4.txt
fa.close()#关闭文件
fb.close()
fc.close()
fd.close()
三、信息爬取
有一文本文件data.log, 需要读取里面信息,将所有关键信息提取出来(见黑体部分),如:
‘’’
/*********************************************************************************************************************
* Runnable Entity Name: DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead
*---------------------------------------------------------------------------------------------------------------------
* Executed if at least one of the following trigger conditions occurred:
* - triggered by server invocation for OperationPrototype <ConditionCheckRead> of PortPrototype <DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow_>
**********************************************************************************************************************
* Runnable prototype:
* ===================
* Std_ReturnType DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead(Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType *ErrorCode)
**********************************************************************************************************************
* Available Application Errors:
* =============================
* RTE_E_DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__DCM_E_PENDING
* RTE_E_DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__E_NOT_OK
*********************************************************************************************************************/
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << Start of documentation area >> DO NOT CHANGE THIS COMMENT!
* Symbol: DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead_doc
*********************************************************************************************************************/
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << End of documentation area >> DO NOT CHANGE THIS COMMENT!
*********************************************************************************************************************/
FUNC(Std_ReturnType, DcmDID_CODE) DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead(Dcm_OpStatusType OpStatus, P2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_DCMDID_APPL_VAR) ErrorCode) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */
{
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << Start of runnable implementation >> DO NOT CHANGE THIS COMMENT!
* Symbol: DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead (returns application error)
*********************************************************************************************************************/
DcmDID_TestDefines(); /* PRQA S 2987 */ /* MD_Rte_2987 */
return RTE_E_DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__E_NOT_OK;
/**********************************************************************************************************************
* DO NOT CHANGE THIS COMMENT! << End of runnable implementation >> DO NOT CHANGE THIS COMMENT!
*********************************************************************************************************************/
}
‘’’
提取出来的信息可以参考下述格式,也可以自定义,但必须包含如下信息:
A = {
1 :{‘func_name’: “FUNC(Std_ReturnType, DcmDID_CODE) DataServices_DID_D945_P1_motor_oil_flow_DID_D945_P1_motor_oil_flow__ConditionCheckRead(Dcm_OpStatusType OpStatus, P2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_DCMDID_APPL_VAR) ErrorCode) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */”, “sub_name”: “DID_D945”, “parameter_1”: “OpStatus”, “parameter_2”: “ErrorCode”},
2:…
…
}
程序设计和实际输出:
我的作答是;
import re
flag=1
fa=open(r"C:\Users\acer\Desktop\python测试题素材\data.log",'r')#打开我们需要分析的data.log文件
for line in fa.readlines():#读取文档的每一行
if(re.search(r'^FUNC',line)):#通过正则表达式模块中的re.search()从每一行中提取FUNC(……)
print('func_name'+str(flag)+':'+line)#对于查找成功的行我们输出
sub_name=re.search(r"DID_D\d\d\d",line)#对于查找成功的每行串中,继续查找DID_D***
print('sub_name'+str(flag)+':'+sub_name.group())#输出查找的结果
parameter_0=re.search(r"OpStatus,",line)#第一参数只有OpStatus
parameter_1=re.search(r"OpStatus",parameter_0.group())
print('parameter_1 '+str(flag)+':'+parameter_1.group())#查找成功输出
parameter_3=re.search(r"Data\)|ErrorCode\)",line)#第二参数有DATA,ERRORCODE
parameter_2=re.search(r"Data|ErrorCode",parameter_3.group())
print('parameter_2 '+str(flag)+':'+parameter_2.group())#查找成功输出
print("\n")#作为界限便于对输出结果的查看
flag=flag+1#对输出结果计数
fa.close()#关闭文件
这三道题目是我仔细学习了正则表达式以及python爬虫后的作答,正确与否我就不知道了,因为之后的通知是:
对不起,我们有更合适的人选了。
失败,失败,然后就对自己产生怀疑,就会懈怠,然后说放弃。我也不例外。我很少投简历了,但我还在继续学习中,8月末,我回到了学校,不过我再学习的是web前端的相关技术,HTML,CSS,Javascript。因为相比较python的易学不易精,前端开发更容易实现一个怎么做,做什么后的结果。
我实现了轮播图,又尝试去用JavaScript实现贪吃蛇小游戏,虽然刚入门,好些思维也是通过CSDN中的大佬们的代码中复制然后改进的,但所幸也确实更快的了解到了一些知识。
然后校招宣讲,我在导员的推荐下去听了,然后当场做了笔试,不过笔试很痛苦的,选择题ABCD可以蒙,填空题我应该只有一空是自信的作答,至于编程题,更是慌乱到连C语言,python,亦或是JavaScript的语法都弄不清楚了。
我觉得没什么希望了,找了数据结构的书准备复习一手。晚上HR联系我,问我第二天可不可以去面试。
第二天,参观了公司,随后做了面试。这次面试不是施压面试,整个面试过程都很舒服。
问:在学习JavaScript?了解多少了?
答:能够实现轮播图。
问:说说怎么实现的?
我就把轮播图实现的流程说了一下,随后他又问了一些JavaScript的基础语法,什么数据类型呀,什么数组中的数据类型可以是些什么之类的,我自然是知无不言,不知道的坦然说出来。
然后就说到了自己制作贪吃蛇的事情,面试官似乎有些兴趣,就对相关内容进行了询问,当然,你做过,自然清楚。
问:你了解框架吗?
答:打算学习vue的,但是面试的机会先到了。
问:知道jQuery嘛?
答:使用$()实现的方法吗?有接触过但不了解。
问:抗压能力怎么样?
我把我社团工作的经验说了,他似乎对我比较满意,随后就谈了一些有关未来规划的事儿。
比如说考不考研,薪资问题,教资,公考,以及有没有女朋友的事儿。
整个面试很舒服,不会觉得很紧张,也不会有各种惊慌失措。
面试结束后,HR姐姐就问我要不要签实习协议。我自然是愿意的,因为自己学习的效率很低下,有一个实习的机会是很好的。
经验总结:一、校招本身就是一个对我们在校生的优势与机会,所以把握住机会,公司校招也清楚你没有直接实战的能力,反而愿意给你机会,愿意培养你。二、自己刚好也在一个学习变强的道路上,所以安心的学习,然后勇敢的迈出去,机会是给有准备的人的。三、公司在发展,你也要发展,双向的需求才是一种最为舒适的模式。四、禁止给自己挖坑,面试,展示出自己真实的一面就好,不要怀疑自己,也不要高看自己。五、虚心学习,放低姿态,成功与失败都是你的一笔宝贵财富。六、你会感谢现在努力的自己,坚持,人生如同小马过河一样,只有自己趟过去了,才知道其中的喜悦。
第一次出现在CSDN中,希望我的经验可供大家参考,也希望大家可以对我的问题多多指点,才疏学浅,今后请多多指教!