首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
02-21 16:35
上海交通大学 算法工程师
Redis 的 Zset底层是怎么实现的?
一、面试题简述Redis 里的Zset你用过吗?它既能按照 score 排序,又能按照 member 快速查找,这是怎么做到的?底层到底用了什么数据结构?为什么这样设计?二、面试官想听的这道题本质不是问Zset 用了什么结构,而是在考察:1、你是否能从需求出发推导结构设计2、你是否理解时间复杂度与操作路径的权衡3、你能不能讲清楚为什么不用别的结构面试官真正想听的是你能不能从工程约束推导出 Hash + SkipList 是一种必然,而不是偶然。三、面试回答举例Zset 的核心需求其实很矛盾:第一,它要按 score 有序; 第二,它要支持根据 member 快速查找和更新。这两个需求如果拆开来...
技术必备题库
点赞
评论
收藏
分享
02-16 11:30
迅雷_X-PEP 产品星(准入职员工)
迅雷内推,迅雷内推码
一面面试官来自迅雷浏览器 1. 自我介绍 2. 分享 C 端相关的经历 3. 对 2 提到的消费者售后需求,竞品是怎么做的? 4. 暑期实习工作 5. 对 4,如何理解首页资源既是用户编辑的地方,又是运营可以操作的地方 6. 使用情况的量级 7. 基础体验最应该做的事情是什么? 现状:功能创新少,策略渗透多。 因此,最应该做的事是策略的精细化运营,给每个人不同的产品体验 产品责任:定义运营位的使用规则、体验边界、运营能力,做好运营平台的建设,让运营跟正常开发解耦。 8. 迅雷浏览器体验中的亮点/槽点 9. 其他有意思的产品分享下 豆包 PC 端 - 插件做场景渗透,把我黏住了,选中文字浮起工具...
点赞
评论
收藏
分享
01-19 09:46
深圳大学 Java
百度26秋招毁意向
避雷🐻厂,时间线如下:10.13 oc,ld加v10.22 意向至今无HR联系,问了ld没回复。
喵_coding:
有可能hr也被裁了
点赞
评论
收藏
分享
02-12 20:58
门头沟学院 Java
AI Agent项目求推荐
27双非备战暑期实习,目前一个黑马点评项目,一个鱼皮的智能云图库,感觉有点水,想把其中一个换成agent项目还想补一些微服务的技术栈,大家有什么推荐的项目吗
点赞
评论
收藏
分享
02-16 10:19
门头沟学院 C++
C++ 多线程与并发面试题
1. 进程和线程的区别?答案:进程资源分配的基本单位独立的地址空间进程间通信(IPC)开销大创建销毁开销大线程CPU调度的基本单位共享进程的地址空间线程间通信简单(共享内存)创建销毁开销小对比进程更安全,隔离性好线程更轻量,切换快线程共享资源,需要同步C++中的线程C++11引入std::thread跨平台的线程库RAII风格管理2. 什么是线程安全?如何实现?答案:定义多线程访问时,程序行为正确不会出现数据竞争结果可预测实现方法互斥锁(Mutex)保护临界区同一时间只有一个线程访问读写锁多个读者,一个写者提高并发度原子操作不可分割的操作无需加锁无锁数据结构使用CAS(Compare-And-...
C++面试总结
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
嵌入式应届生春招怎么准备——从零到拿 Offer 的系统攻略
971
2
...
关于租房
486
3
...
27届实习近一年的年度经历和总结
473
4
...
HTTP 和 HTTPS 区别
462
5
...
agent实习都干什么?prompt设计
313
6
...
追一科技 C++ 一面
249
7
...
美团推荐算法一面
239
8
...
得力嵌入式工程师 二面 面经
228
9
...
这个简历可以去找暑期实习了吗
227
10
...
大三无实习
221
创作者周榜
更多
正在热议
更多
#
牛客新年AI问运
#
14063次浏览
168人参与
#
你最讨厌面试被问什么
#
1334次浏览
26人参与
#
牛客AI体验站
#
17878次浏览
302人参与
#
有转正机会的小厂实习值得去吗?
#
651次浏览
19人参与
#
牛友们,签完三方你在忙什么?
#
137395次浏览
993人参与
#
担心入职之后被发现很菜怎么办
#
282540次浏览
1185人参与
#
如何缓解入职前的焦虑
#
258880次浏览
1451人参与
#
校招第一份工作你干了多久?
#
139419次浏览
609人参与
#
去年的flag与今年的小目标
#
34312次浏览
337人参与
#
牛客租房专区
#
151470次浏览
1480人参与
#
秋招开始捡漏了吗
#
229471次浏览
1044人参与
#
九月了,是考研还是就业?
#
89323次浏览
557人参与
#
秋招投递攻略
#
268803次浏览
2553人参与
#
这份实习,有没有动摇过你的职业方向?
#
2225次浏览
40人参与
#
搜狐工作体验
#
4119次浏览
29人参与
#
机械人求职现状
#
33657次浏览
297人参与
#
我是XXX,请攻击我最薄弱的地方
#
61798次浏览
410人参与
#
用友工作体验
#
18086次浏览
151人参与
#
你的工资什么时候发?
#
57495次浏览
355人参与
#
你的实习什么时候入职
#
348105次浏览
2291人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务