实习年终总结

关于Git:

第二个月接触变多,第一个月只有最开始拉了一次分支,然后中途暂存了一次,使用add和commit可以提交到本地,会有本地备份,可以作为写代码的参考和方便回滚。任务一完成后合并分支到主干,要考虑变基(rebase),因为拉下来后写的太久,主干上已经提交了新的节点,用merge已经无法合并,每次智慧合并都会失败,然后使用Beyond Compare+Git可视化工具,手动找不同点,把不是我写的都rollback。以前没接触过大型项目,只会写玩具,确实没发掘git的强大。第二个月处理接口任务需要不断切换分支,所以用的比较频繁。

关于CPP:

(不能说的太具体,说点基础概念吧)

绕不开的单元测试(抗重构/挺符合我干的业务场景的),单元测试跑过代表新写的代码没有低级错误(维护功能不会回退),能通过特例,但是不能保证没有逻辑错误。单元测试存在于项目内部,不宜写的冗长,讲究性价比。我在debug的时候写了一堆,因为要测试每种类型的逻辑,我就kuku写了一堆烂代码,也没想到把一些基础的坐标系参数等数据抽出来,全堆在函数内部了。

模板元编程。大佬们真的很喜欢模板和写新特性,见到了很多 std::enable_if 和 constexpr,在运算符重载和结构体中疯狂用,对于非基础类型可以写模板特化,对于没写的我只能搞类型转换,又写了一堆烂代码。

宏定义。链接导入导出的宏,标志操作系统下操作的宏...

绕不过去的指针/智能指针,首先把返回值用引用类型的参数,构建无数个回调函数是常见用法,对于特定的坐标数组(例),用指针+长度的方式也不错,题外话:在序列化的时候碰到了void*类型,设计出现问题,没有配套给出size_t size,不知道stream的时候流多少合适,向其它基础类型可以直接根据字节数量流入流出。继续:关于智能指针的转换,如何用普通指针接收unique_ptr...

强制转换也用的很多,最优美的地方是子类对象向基类对象的向上转换,很多逻辑上的xx类型,通过获得基类对象再去做其它数学运算,其它就是类型转换,什么时候用类型检查的static_cast,什么时候用运行时检查的dynamic_cast(通过模板对类类型做转换),然后有时候指针转换不能类型检查,保证逻辑正确的情况下,直接无检查的类型转换。

作用域using,这和设计的类型封装思想结合了,结合实际。

其它就是设计逻辑上的学习,内核 -> 应用。内核的层级划分。

关于调试,动态链接静态链接,如何改CMakeList,要链接哪些文件...

我自己在完成任务的时候也做了一些小设计,第二个月之后哈,前面确实有点懵。包括抽出Local函数,添加static保证只能在当前文件使用,泛型的函数参数设计等。总之挺走运的,之前的实习生一直在写脚本,我干的还是接触项目了。

关于业务:

也学了一点皮毛,后续不想接触,也不想做这个,感觉基础太差太薄弱,想跑。具体是什么不说了,现在还不想被开盒。

关于打算:

到目前还保持了每日一题hot100的任务,现在进度36/100,预计3月份能刷完,很多之前都做过,我觉得还是想一下思路,然后看题解记住解题方法比较好,适合短时间速成者。看了阿秀推荐的《Effective C++》目前刚看一章,想过年的时候看完,留个印象。然后实习结束后可能补一下数据库和QT的技术栈,侧重在数据库和中间件,秋招先冲,春招再求稳。

全部评论
业务
点赞 回复 分享
发布于 01-27 22:45 广东
工业软件是吧,我之前也干过
点赞 回复 分享
发布于 01-27 17:12 福建
模板元编程厉害
点赞 回复 分享
发布于 01-27 12:20 福建

相关推荐

Koa.js 是一个基于 Node.js 的后端框架,它由 Express.js 的团队创造,旨在提供更简洁、更优雅的编程体验。下面是 Koa.js 的特点:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=1730841bd8554b2fa6de4161e81ebb45异步流程控制:Koa.js 使用 async/await 来处理异步操作,极大地简化了编写异步代码的过程。通过使用 async 函数和 await 关键字,可以避免回调地狱(Callback Hell)和使用 Promise 链的繁琐和难以理解的代码。中间件:Koa.js 通过中间件(Middleware)来处理请求和响应。中间件是函数,它可以在请求到达路由之前或响应返回给客户端之前修改请求和响应。Koa.js 的中间件系统非常灵活,可以串联多个中间件,并且在需要时可以动态添加或删除中间件,以满足各种场景需求。上下文(Context)对象:Koa.js 提供了一个上下文对象,用于封装原始的 Node.js 请求和响应对象,并提供了更加便捷的 API 来处理请求和响应。上下文对象包含了一些常用的属性和方法,例如请求和响应的头部信息、请求体的解析等。轻量灵活:Koa.js 是一个非常轻量级的框架,核心代码只有几百行。它没有集成过多的功能,而是通过中间件来扩展功能。这使得 Koa.js 非常灵活,可以根据需求选择适用的中间件,并深度定制应用程序的行为。错误处理:Koa.js 提供了一种优雅的方式来处理错误。它使用 try/catch 结构捕获同步和异步代码中的错误,并将错误传递给应用程序中定义的错误处理中间件。这样可以统一处理错误,而不会导致应用程序崩溃。高度可扩展:因为 Koa.js 的核心功能非常简洁,所以可以通过中间件轻松地扩展功能。这意味着可以根据应用程序的需求选择性地添加所需的功能,而不必包含大量不需要的功能。总结起来,Koa.js 是一个基于 Node.js 的轻量级框架,具有异步流程控制、中间件体系、上下文对象等特点。它通过简洁而优雅的代码编写方式,提供了灵活可扩展的方法来开发高性能的后端应用程序。
点赞 评论 收藏
分享
评论
14
23
分享

创作者周榜

更多
牛客网
牛客企业服务