首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
蒋鹏集美大学
集美大学 机械设计/制造
发布于福建
关注
已关注
取消关注
@蒋豆芽:
Jaime0117-海康威视 C++应用软件开发——解答
从今天起,豆芽有空也尽己所能,帮助一下大家。 面经来源:https://www.nowcoder.com/discuss/746975?source_id=discuss_experience_nctrack&channel=-1 1. C++多态 基类指针可以按照基类的方式来做事,也可以按照派生类的方式来做事,它有多种形态,或者说有多种表现方式,我们将这种现象称为多态(Polymorphism)。多态的实现机制为虚函数。 虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类的同名函数。 方法是在基类中为同名函数添加关键字virtual 2. 内存结构 如上图,从低地址到高地址,一个程序由代码段、数据段、BSS段、堆栈段组成。 代码段:存放程序执行代码的一块内存区域。只读,不允许修改,代码段的头部还会包含一些只读的常量,如字符串常量字面值(注意:const变量虽然属于常量,但是本质还是变量,不存储于代码段)。 数据段data:存放程序中已初始化的全局变量和静态变量的一块内存区域。 BSS 段:存放程序中未初始化的全局变量和静态变量的一块内存区域。 可执行程序在运行时又会多出两个区域:堆区和栈区。 堆区:动态申请内存用。堆从低地址向高地址增长。 栈区:存储局部变量、函数参数值。栈从高地址向低地址增长。是一块连续的空间。 最后还有一个文件映射区(共享区),位于堆和栈之间。 3. 静态成员函数可以直接访问非静态数据成员吗 不能。 当调用一个对象的非静态成员函数时,系统会把该对象的起始地址赋给成员函数的this指针。而静态成员函数不属于任何一个对象,因此C++规定静态成员函数没有this指针。既然它没有指向某一对象,也就无法对一个对象中的非静态成员进行访问。 4. socket编程了解吗 socket是一种特殊的文件。在Linux中,“一切皆文件”,都可以用“打开(open)——读写(write/read)——关闭(close)”的模式来操作。socket就是改模式的一个实现,并提供了一系列对应的函数接口。 我们以TCP为例,下图展示了其交互的过程: 图中展示的交互流程,具体如下所述 : (1)服务器根据地址类型( ipv4, ipv6 )、 socket 类型、协议创建 socket。 (2)服务器为 socket 绑定 IP 地址和端口号。 (3)服务器 socket 监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket 并没有被打开 。 (4)客户端创建 socket。 (5)客户端打开 socket,根据服务器 IP 地址和端口号试图连接服务器 socket。 (6)服务器 socket 接收到客户端 socket 请求,被动打开,开始接收客户端请求,直到客户端返回连接信息 。这时候 socket 进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端连接请求 。 (7)客户端连接成功,向服务器发送连接状态信息 。 (8)服务器 accept 方法返回,连接成功 。 (9)客户端向 socket 写入信息 。 (10)服务器读取信息 。 (11)客户端关闭 。 (12)服务器端关闭 。 涉及到的接口函数如图 5. TCP四次挥手的CLOSE_WAIT状态是在什么时候,出现大量CLOSE_WAIT会有什么影响 第二次挥手时。 大量CLOSE_WAIT影响服务器资源的释放,最后申请不了新的资源后,服务器宕机。 6. IO多路复用了解吗,select有什么问题,1024可以修改吗 IO多路复用:Linux用select/poll函数实现IO复用模型,这两个函数也会使进程阻塞,但是和阻塞IO所不同的是这两个函数可以同时阻塞多个IO操作。而且可以同时对多个读操作、写操作的IO函数进行检查。select/poll会监听所有的IO,直到有数据可读或可写时,才真正调用IO操作函数。 select,poll,epoll都是IO多路复用的机制,I/O多路复用就是通过一种机制,可以监视多个文件描述符(Linux中,一切皆文件,通过文件描述符来标识),一旦某个文件描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需用户自己进行读写,异步I/O的实现是内核负责把数据从内核拷贝到用户空间,用户直接使用数据,这个过程是非阻塞的。 三者的原型如下所示: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ); int poll(struct pollfd *fds, nfds_t nfds, int timeout ); int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout ); 总结下select的几大缺点: (1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大 (2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大 (3)select支持的文件描述符数量太小了,默认是1024 理论上1024可以修改 7. 多线程有哪些锁,读写锁有什么特点 (1)互斥锁:mutex,保证在任何时刻,都只有一个线程访问该资源,当获取锁操作失败时,线程进入阻塞,等待锁释放。 (2)读写锁:rwlock,分为读锁和写锁,处于读操作时,可以运行多个线程同时读。但写时同一时刻只能有一个线程获得写锁。 互斥锁和读写锁的区别: (a)读写锁区分读锁和写锁,而互斥锁不区分 (b)互斥锁同一时间只允许一个线程访问,无论读写;读写锁同一时间只允许一个线程写,但可以多个线程同时读。 (3)自旋锁:spinlock,在任何时刻只能有一个线程访问资源。但获取锁操作失败时,不会进入睡眠,而是原地自旋,直到锁被释放。这样节省了线程从睡眠到被唤醒的时间消耗,提高效率。 (4)条件锁:就是所谓的条件变量,某一个线程因为某个条件未满足时可以使用条件变量使该程序处于阻塞状态。一旦条件满足了,即可唤醒该线程(常和互斥锁配合使用) (5)信号量。 以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo
点赞 47
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-06 22:48
上海戏剧学院 运营
研三快毕业,求指点
纠结是继续搞艺术还是转行
点赞
评论
收藏
分享
05-07 08:48
门头沟学院 Java
Agent别被挂羊头卖狗肉的岗位骗了
家人们谁懂啊!刷到这个话题我真的要吐槽了。今年春招,我身边至少10个同学,想冲Agent赛道,结果瞎投岗位,不是被挂羊头卖狗肉的岗位骗了,就是投了根本不匹配自己的岗位,浪费了大把时间,最后0offer,还吐槽Agent赛道卷、没机会。真的别再瞎投了!Agent赛道早就不是什么新鲜东西了,岗位细分得明明白白,哪些是真风口、有发展、能学到东西,哪些是坑、纯打杂、没前途,早就清清楚楚。今天我就把这些坑全扒出来,再告诉大家哪些岗位真正值得冲,别再被忽悠了!先盘点Agent赛道最坑的3个岗位,投了就是浪费时间这些岗位,名字里都带着“Agent”,听起来高大上,实则纯纯打杂、没发展、学不到任何东西,应届生...
想做Agent可以做哪些...
点赞
评论
收藏
分享
04-15 18:28
华南理工大学 大数据开发工程师
leetcode害了我的室友!!
自从我室友在计算机导论课上听说了“刷 LeetCode 是进入大厂的敲门砖”,整个人就跟走火入魔了一样。他在宿舍门口贴了一张A4纸,上面写着:“正在 DP,请勿打扰,否则 Time Limit Exceeded。”日记本的扉页被他用黑色水笔加粗描了三遍:“Talk is cheap. Show me the code。”连宿舍聚餐,他都要给我们讲解:“今天的座位安排可以用回溯算法解决,但为了避免栈溢出,我建议用动态规划。来,这是状态转移方程:dp[i][j] 代表第 i 个人坐在第 j 个位置的最优解。”我让他去楼下取个快递,他不直接去,非要在门口踱步,嘴里念念有词:“这是一个图的遍历问题。从宿舍楼(root)到驿站(target node),我应该用 BFS 还是 DFS?嗯,求最短路径,还是广度优先好。”和同学约好出去开黑,他会提前发消息:“集合点 (x, y),我们俩的路径有 k 个交点,为了最小化时间复杂度,应该在 (x/2, y/2) 处汇合。”有一次另一个室友低血糖犯了,让他帮忙找颗糖,他居然冷静地分析道:“别急,这是一个查找问题。零食箱是无序数组,暴力查找是 O(n)。如果按甜度排序,我就可以用二分查找,时间复杂度降到 O(log n)。”他做卫生也要讲究算法效率:“拖地是典型的岛屿问题,要先把连通的污渍区块都清理掉。倒垃圾可以用双指针法,一个指针从左往右,一个从右往左,能最快匹配垃圾分类。”现在我们宿舍的画风已经完全变了,大家不聊游戏和妹子,对话都是这样的:“你 Two Sum 刷了几遍了?”“别提了,昨天遇到一道 Hard 题,我连暴力解都想不出来,最后只能看题解。你呢?”“我动态规划还不行,总是找不到最优子结构。今天那道接雨水给我整麻了。”……LeetCode 真的害了我室友!!!
老六f:
编程嘉豪来了
AI时代还有必要刷lee...
点赞
评论
收藏
分享
04-11 01:30
苏州城市学院 嵌入式软件开发
大三应该现在投实习了吗
焦虑ing,二本,绩点挂车尾,无竞赛就会个stm32和freertos,esp32。无竞赛,学历差。真让人焦虑。这是应付学校任务写的简历,说实在的,平衡车和nwatch都是跟着视频(铁头山羊,韦东山)复刻的。MQTT这部分让ai吹了一下,实际上我不会LVGL,就在简历抹去了。八股文没开始背,面试题还没开始看。需不需要刷一点算法?来不及了,才知道大三这个时候应该投简历了,骑驴找马,边投边学
牛马人的牛马人生:
基本上算是完蛋了
投了多少份简历才上岸
点赞
评论
收藏
分享
05-07 10:09
蚌埠坦克学院 嵌入式软件开发
嵌入式面试常考八股文汇总
嵌入式岗位面试中,除了项目经历,面试官也很喜欢围绕基础知识、单片机原理、RTOS、通信协议、Bootloader、C语言底层细节等内容展开提问。下面给大家整理了 40 个嵌入式面试高频题目,适合用来查漏补缺、系统复习。一、C语言与基础知识volatile 关键字的作用是什么?哪些场景必须使用?const 和 #define 的区别是什么?指针和数组的区别是什么?malloc、calloc、realloc 的区别是什么?结构体内存对齐的原理是什么?为什么要进行内存对齐?大端模式和小端模式有什么区别?如何判断当前平台的字节序?static 关键字在局部变量、全局变量、函数中分别有什么作用?什么是野...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
毕业啦!我们要一起去广州打拼啦!
1.6W
2
...
毕业了,有些话只能藏在心里了
1.4W
3
...
2026春招到底卷成什么样了?填问卷说出真相,最高领200元现金红包
1.2W
4
...
字节 中国交易与广告 后端一面
9878
5
...
从阿里被裁到快手升P6,我花了四年
6933
6
...
211本,130投0面,agent应用开发,简历求助!
6893
7
...
在携程的一天
6044
8
...
别人:阿里 字节 腾讯
5079
9
...
从腾讯到阿里感,谢一路走来的自己
4978
10
...
华为暑期实习
4844
创作者周榜
更多
正在热议
更多
#
这个offer值得去吗?
#
31888次浏览
231人参与
#
校招薪资来揭秘
#
960678次浏览
4062人参与
#
在爱玛,骑向未来
#
20412次浏览
395人参与
#
如果春招能重来,我会___
#
29485次浏览
296人参与
#
24秋招避雷总结
#
1020103次浏览
7098人参与
#
你会因为行情,降低找工作标准吗?
#
45278次浏览
328人参与
#
机械人还在等华为开奖吗?
#
339231次浏览
1652人参与
#
米哈游求职进展汇总
#
688671次浏览
3348人参与
#
华为池子有多大
#
178103次浏览
931人参与
#
26届春招投递记录
#
8692次浏览
72人参与
#
25届网易互娱暑实进度
#
109110次浏览
802人参与
#
通信/硬件求职避坑tips
#
172069次浏览
1170人参与
#
记录我的毕业季
#
4722次浏览
118人参与
#
机械人,你的秋招第一份简历被谁挂了
#
268778次浏览
2450人参与
#
远程面试的尴尬瞬间
#
363873次浏览
2062人参与
#
大学最后一个寒假,我想……
#
103304次浏览
846人参与
#
机械求职避坑tips
#
103689次浏览
589人参与
#
你认为小厂实习有用吗?
#
145061次浏览
762人参与
#
运营商笔面经互助
#
219645次浏览
1833人参与
#
美团秋招笔试
#
216409次浏览
1192人参与
#
网易求职进展汇总
#
213167次浏览
1524人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务