内容: 自从大三暑假去福州开始了第一次实习之后,开始感受到了理论与实践之间的差别,有时候书里的知识只是科普,带你了解事物大概的样子,而真实的样子必须靠你实际去亲身体会,才能感受到他的奥秘吧。有时候是一种缘分吧,第二次实习的公司是第一家实习公司的友商,然后还是同一业务部门,相当于又是重操旧业了哈哈。
深圳实习感受:
1. 深圳的节奏比以前在福州,在厦门要快很多,当然也是因为公司规模大了很多,公司业务影响力更大了,所以业务量也比较大。
2. 深圳是逼着你在进步,你的工作做不完,你不能一直通过投入更多时间去完成,更应该想想一直做不完的原因,是哪项技能不够娴熟,或者哪里的知识欠缺导致一直用的方法比较低效
举个例子:
出现问题:有一次编译代码出错,原因是链接错误,未能找到函数实现,我猜测原因是我当前工程目录下的makefile引入的动态库少了(在公司都是引入动态库,不是像在宿舍一样手动链接c文件)
原本方法:对公司的动态库逐个使用 nm -D 指令查找我缺少的函数在哪个动态库里面,因为linux没有 命令能够帮你自动找出这个函数当前包在哪个动态库里
正确方法:经导师指导,不需要这么做,过于低效,因为动态库非常多,逐个排查费时费力。应该是进入公司的网络设备后台,查找跟我同业务的进程,此进程也会使用我缺少的函数,那么打印这个进程的0-3G地址空间可以看到引入的动态库映射到哪个地址段,那么再打印你缺少的函数的地址,看这个地址落在哪个动态库的映射范围,就知道是少了哪个库。
解决关键:利用当前正在跑的进程的地址空间信息,解决问题
3. 操作系统和计算机网络知识挺重要的,是一项基本功,有了它更容易帮你理解一些底层原理
4. 不能只会刷题!!我以前都是刷题和看书比较多,然而进入公司后开始安排写业务代码的时候,从编译到调试,从makefile到gdb,各种工具都需要用到,所以我一开始就是处处碰壁,这些工具都是会一部分,但不熟。经过了一个月的适应就好了很多,也不离开导师每天的辛勤指导哈哈
5. 不懂的一定要问,不确定的一定要问,不能凭自己的想法去做,一旦跑偏就比较麻烦
再举个例子:
我刚开始的小任务是在网络设备上开发新的shell命令行,有A模式和B模式(具体模式不说哈,涉及业务内容),由于B模式是A模式的一个子模式,我的新命令任务是关闭B模式。我就在B模式命令行下写这个代码,由于B模式是A模式的子模式,那么你不从A模式进入B模式的时候,你是不能执行B模式的业务命令的,这个是公司框架限制。但是我一开始不知道有这个限制,就在B模式命令行下开发了关闭B模式功能,但是当你回到A模式,再想把刚才B模式的配置关闭时,发现无法操作B模式的命令,要再次进入B模式才能执行关闭,但是每次进入要涉及一些配置加载等工作,比较久。所以子模式的开启关闭命令应该是在母模式能够执行才对的。(模式切换很麻烦,涉及设备重启)
问题原因:没事先了解母模块无法直接执行子模块业务逻辑命令,而关闭模块这个功能不能算业务逻辑功能,所以应该放在外层母模块才对,而不是哪个模块的命令就放哪个模块
6. 跟同事描述问题的时候不能只说当前遇到的问题的样子,而要把为什么你要去做这个业务,这个业务的内容会涉及到哪些东西说清楚
再举个例子:
我在开发命令行的过程中,需要读取数据库的内容,所以我引入数据库的接口,但是后面发现同事的其它命令行的接口读取数据库内容是通过执行脚本,通过IPC让其它数据库进程把内容写到一个文件,它直接去读数据,应该是为了让数据更安全,不能所有进程都有权利去读取数据库。而我没注意,只想着我需要数据库的内容,我就去读,引入数据库接口,而引入过程中出现了问题是问同事,我这个函数为什么出现链接错误,但是却没跟同事说我是要引入数据库接口的。结果就是需要换一个方式,改用人家的方式。
7. svn,git这些多多少少学一点呀,会用到的。虽然以前学git,但是实习了两家公司都是svn。
不过图形化svn还是好操作的哈哈,linux下命令行的svn就不好弄了。
8. 越是大公司,写代码就越规范呀,深有体会。仅代码规范文档就30页,新手每次敲完代码都需要参照文档修改很多不合格,如:命名规范,循环逻辑过多,多重if不合格,备注过于繁琐等等
建议: 能去实习一定要去实习,真正去感受实际工作中的写代码是什么样子的。也许会改变你当前学习的计划。也提前感受下每天就是打代码是一种什么体验哈哈,虽有付出很多,但是收获也很多呀!
——继续努力吧,深圳大四小程序员一枚
来源:CSDN
作者:想成为大程序员的小程序员
链接:https://blog.csdn.net/qq_43684922/article/details/103641981