华阳国际一面凉经 25 min

---- 先给个建议,以后面试,最好早到 10 分钟,因为最近 2 次都是面试官更早到🤣

---- 全程一直 “呃,em,欸,让我想一下,不太记得了”,丢脸。。。真的要好好背八股

---- 项目基础要打牢,面试前八股也一定要背,不然几个月前学的东西,真的不一定能想起来

---- 有针对性的,强化下简历上的薄弱环节

1,自我介绍(1分钟)

2,对这个岗位是否了解(3分钟)

CAD二次开发,建筑设计三维渲染

3,STL有哪些组成部分

只说了 stack, map, queue, set...大一学的,忘完了

简历写了“熟悉 STL 使用和原理”,但是回答时,一下想不起来(没背八股,虽然大一学的STL基本使用,用STL刷了二十道算法题,但一年时间忘光光)

4,写过什么算法?计算机图形学的算法接触过吗,比如“给你一堆线,求最大/最小闭合区域”

5,指针和引用的区别

6,做项目过程中,你是怎样防止内存泄漏的

只答了shared_ptr的循环引用和weak_ptr

7,指针和引用,哪个在声明周期结束后需要手动释放

不够熟悉(八股还没看),回答的没啥问题,但是总是用“应该”“大概”“可能”的字眼

8,什么是多态,如何实现多态

讲了个子类重写父类,但是忘记回答虚函数了,只说了个纯虚函数,面试官纠正说是虚函数,八股还是得背,不然基础的概念都模模糊糊

9,进程间如何通信

一个月前看过一眼,但是没背,有印象但答不上来

面试官提示,“你不是做过 socket 吗,socket 也可以用于进程间通信”

10,socket 是长链接还是短链接

答了个HTTP1.1是长连接,socket 如何连接的,项目应该接触过,但是一下想不起来,也说不出来

11,编译的工具是什么

答了 vscode,面试官以为我会回答 QT,因为简历写了“了解QT”,,但是QT是下步学习计划。。。。害,任重道远

然后面试官看到简历有 “了解 Cmake 的简单使用”,说公司里Linux和Windows都有,CMake也用的比较多,吓了一跳,这是给自己挖坑啊(不过本来目的就是以面试促学习),因为CMake其实没用过,只用过一点 Makefile,还是跟着文档敲的

面试官说公司用vs多一点,因为 CAD 是基于Windows做的,然后公司基于CAD做的二次开发。主要做效率工具(一键XXX)和协同工具(建筑行业不同专业需要协同配合)

中望是自己开发的CAD,华阳是ObjectCAD

12,反问

面试官建议:

1,不用那么着急,正常都是大四才开始实习🤣

2,基础不扎实的原因呢,虽然你项目做了,但是你可能只是通过百度,或者看一些视频,文档,东抄一下西抄一下,在网上边学边做,而不是自己从无到有地写出来,“知其然不知其所以然”,类似你 TinyWebServer 做了,但是《unix环境高级编程》,《unix网络编程》这两本书没看过,基础当然会不扎实

3,项目是做了,但是很多原理你不知道,项目质量就会变差,如果你以后的项目都是这样做的话,基础就很难打好,入职后的上限就会很低

---- 挺中肯的,项目虽然,感觉上是很认真,实际上还是东抄抄,西抄抄,而且 webserver 做的过程,只是草草看了一遍游双的《Linux高性能服务器编程》的文字,过了遍 README 的庖丁解牛,看了上百篇博客,写了十几万字的梳理,画了20多个流程图,抄了 2 遍源码,,,,但是说到底,很多细节还是没掌握好(只是抄别人的,不是自己写的,该看的书也没慢慢看完),需要你结合八股加深理解,再多做个 muduo,互相印证下,来巩固基础

---- 所以说,TinyWebServer 花了100小时还是不够啊,,,少看了 2 本书,这两本书起码还得投入 80 个小时至少。。。。

#华阳国际##日常实习##开发##C++#
全部评论
没答上来的基本都是八股,属于有个印象,但是说不出来,而且有些细节或者场景,做项目时并没有遇到,这时就需要八股去补充了
2 回复 分享
发布于 04-23 21:21 广东
系统上可以看看小林coding ,八股这块应对应该没有问题,其实问的都还是基础的八股
1 回复 分享
发布于 04-24 00:17 江西
[3] STL有哪些组成部分: STL,标准模板库,包括 a. 广义上,算法,容器,迭代器;更详细点,容器,算法,迭代器,仿函数,适配器,空间配制器。 b. 首先,容器包括 list, vector, deque 等,以模板类方法提供; 算法比如 sort() 对 vector 排序,find() 搜索 list 中对象 迭代器,类似指针,访问容器中对象 仿函数,即函数对象,就是重载了操作符的 struct 适配器,一种接口类 空间配制器,包括两部分:(1)对象的创建和销毁 (2)内存的获取和释放
1 回复 分享
发布于 04-24 09:03 广东
[5] 指针和引用的区别: 1)指针是一个变量,保存的是另一个变量的内存地址;引用是另一个变量的别名,与原变量共享内存地址 2)指针可以被重新赋值,指向不同的变量;引用初始化后不能更改,始终指向同一个变量 3)指针可以是 nullptr,不指向任何变量;引用必须绑定到一个变量,不能为 nullptr 4)指针需要先解引用才能获取或修改指向的变量的值;引用可以直接使用 5)指针分顶层 const(int *const)指针本身不可变; 和底层 const(const int*)指向指向的对象不可变 引用没有顶层,因为引用本身就不可变,但是有底层const(const int&)
1 回复 分享
发布于 04-24 11:04 广东
[6] 做项目过程中,怎么防止内存泄漏的: 1)内存泄漏:申请了一块内存空间,使用完毕后没有释放掉,比如: a. new 和 malloc 申请的内存,没有 delete 或 free 释放 b. 子类继承父类,父类析构函数不是虚函数 c. Windows 句柄资源,使用后未释放 2)防止泄漏--措施 a. 有申请就要有释放(动态申请内存和释放必须配对) b. 使用智能指针 c. 常用工具插件,如 Vargrind d. 多态中,子类重写父类虚函数,如果父类指针 / 引用指向子类对象,那么父类析构必须是虚函数,否则delete 时,只会调用父类析构,子类的析构函数不会被调用
点赞 回复 分享
发布于 04-25 15:36 广东
[7] 指针和引用,哪个声明周期结束后,需要手动释放 a. 普通指针:通过 new 动态分配内存后,需要手动 delete 而如果是指向栈对象的指针,就不需要手动 delete b. 引用:引用本身不拥有任何资源,只是对象的别名。它一旦被初始化,就始终绑定到同一个对象上。 当它生命周期结束时,无需执行任何释放操作,因为引用没有创建新的内存资源
点赞 回复 分享
发布于 04-25 16:30 广东
[8] 什么是多态,如何实现 参考 [6] 简而言之:同一个接口的不同表现。 实现:子类继承父类时,重写父类虚函数。 原理:每个类的虚函数,都会有一个对应的虚函数表。 当子类重写父类虚函数,虚函数表中的父类虚函数地址,就被替换为子类得重写函数地址
点赞 回复 分享
发布于 04-25 16:34 广东
[9] 进程间如何通信: 概念:多个进程间交换信息的过程 1,管道(Pipes) a. 匿名管道:父子进程间通信(半双工--数据只能在一个方向上流动),也可设置两个管道模拟全双工 b. 命名管道(FIFOs):文件系统中创建,不相关进程间的通信,支持半双工 2,消息队列(Message Queues) 进程间,异步通信方式,进程在消息队列添加/删除消息,接收方从队列读取消息 3,信号量(Semaphores):它不直接进行数据传输,而是通过计数,限制访问某个资源的线程数量,可以比作一个门禁系统,包含等待和信号两种操作,等待就是,门禁关着,有进程在使用资源,其他进程必须等待。信号就是,当一个进程使用完资源,信号操作就会唤醒一个等待的进程。
点赞 回复 分享
发布于 04-25 16:51 广东
[10] socket 是长连接还是短链接 取决于场景。 短链接:每次通信都会新建一个 socket 连接,数据传输完毕后,立即关闭这个连接。比如 HTTP1.0 默认的,每个HTTP请求都会新建一个 TCP 连接,请求和响应完成后就关闭连接。 长链接: 1)socket 连接在数据传输完后,不会理解关闭,而是保持一段时间的开房状态,用于后续多次数据交换。 比如 HTTP1.1 引入的 Keep-Alive 机制,允许一个 TCP 连接可以服务于多个 HTTP 请求,以便减少 TCP 连接建立和 关闭的开销。 2)又比如,WebSocket,SMTP,FTP 等协议,也采用长链接机制 因此,Socket 本身只是通信端点的抽象,它的连接长度由应用程序决定,而不是 socket 本身固有的属性
点赞 回复 分享
发布于 04-25 17:22 广东

相关推荐

点赞 评论 收藏
分享
评论
7
25
分享
牛客网
牛客企业服务