大四实习小记

时间过得很快,好像自己还没有做些什么,时间就已经来到了这个要说告别的节点,而很多人的人生轨迹也逐渐踏上了新的选择,考研或者说是就业,似乎是每一个同学在大三就应该去考虑的问题。我周围考研的人大概划分为以下三类:一、真正喜欢科研,适合科研,而且有能力去搞科研的;二、在当下的就业环境下,通过读研而来拔高自己学位,从而获取一个更好的敲门砖;三、畏惧社会,没有信心立刻就业,从而选择了考研继续学习的道路。这三类人就我个人的观点,显然的是第一类人热情学习,从大一到大四,都不曾荒废自己,努力自信,所以他们保研成功,成为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中,希望我的经验可供大家参考,也希望大家可以对我的问题多多指点,才疏学浅,今后请多多指教!

上一篇:The connection to the server localhost:8080 was refused - did you specify the right host or port?


下一篇:面试官问我zookeeper选举过程,我当场给他讲了源码