某私募基金投资公司面经+字节基础架构面经——11.18日

本文涵盖了某私募基金投资公司的面试经验,涉及到C++的智能指针深入探讨,如unique_ptr、shared_ptr和weak_ptr的使用,以及C++11的新特性。还讨论了操作系统层面的问题,如用户态和内核态的转换、线程与进程的区别、进程间的通信,以及TCP和UDP的差异。此外,还涉及了TCP粘包问题、进程状态和线程上下文切换的细节。最后,文章提及了网络协议、Linux与Windows的区别以及TCP/IP通信过程中的相关知识点。
摘要由CSDN通过智能技术生成
  1. 项目。问的比较详细,如何调试的

  2. C++新内容

  3. 智能指针:三个指针大概的说了一下添加链接描述

  4. unique_ptr相较于shared_ptr有什么优势?这个当时没答上来,只是说独占资源。

  5. weak_ptr是怎么用的,说了use_account可以观测计数,然后weak_ptr可以调用lock函数获取一个shared_ptr对象,从而操作这个资源。

  6. 问C++11除了智能指针还有什么新特性,我说右值引用,其实还有auto类型以及lambda表达式

  7. 一个类当中的各个变量,分别存储在什么位置:有初始值的变量(成员变量或者全局变量)——在堆里,对象本身在堆里或常量池中没有初始值的变量(形参)——在栈中,类的静态变量——在方法区new出来的——在自由存储区,这个可以是堆也可以是静态存储区

  8. 虚函数表存在常量区中,虚函数本身在代码段在这里插入图片描述

  9. malloc/free分配的空间除了在堆里面还可以在别的地方么?不知道

  10. 计算机网络:

  11. TCP和UDP的区别;为什么UDP快;1.现在光纤传输丢包率本身低;2.TCP头部大,且为了可靠性需要连接以及一系列的机制,丢包的时候需要缓存和重传;3.UDP自定义重传,有包就发,而TCP要按序接收。

  12. TCP粘包问题:多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界;回想nagle算法为了避免糊涂窗口,需要等一个大包再发。 处理方式: 1.每次发固定长的包 2.在包末尾加界定符(注意要对这些字符本身做转码或者转移操作避免误结束)。3.包头+包体:包头定长,含有一个字段描述接下来的包有多大。用总长度减去固定包头长度即可得到数据长度。

  13. 进程的相关问题,进程间的通信:不会

  14. 代码题:简单二分查找

  15. https://leetcode-cn.com/problems/koko-eating-bananas/

附加:

同门的面试题:

  1. 用户态和内核态以及如何从用户态转内核态:一般的操作系统对执行权限进行分级,分别为用户态和内核态。内核态相当于一个介于硬件与应用之间的层,内核有ring 0的权限,可以执行任何cpu指令,也可以引用任何内存地址,包括外围设备, 例如硬盘, 网卡,权限等级最高。用户态则权利有限,例如在内存分配中,有一部分内存是仅为内核态使用的,用户态code则不允许访问那些内存地址,每个进程只允许访问自己申请到的内存。而且不允许访问外围设备。另外在执行cpu指令的时候也可以被高优先级抢占。状态转换:1.系统调用:这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使 用操作系统提供的服务程序完成工作,具体方式与中断类似:以fork为例,fork的系统调用号是2,就把2放到eax里,然后int 0x80软中断调用处理函数,在中断向量表中查找90找到对应的中断处理程序,然后调用系统调用表,查表2执行系统调用,执行完了返回用户态。 2.异常:出错,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。3:外围设备中断(硬中断) 外设请求CPU响应中断信号,执行中断处理程序,自然发生用户态到内核态的切换。

  2. 线程与进程之间的区别 ,见我博客添加链接描述

:进程是资源分配的基本单位,而线程是CPU调度的基本单位。
2.1地址空间:线程共享一个进程的地址空间,而进程之间是独立的;
2.2资源:线程共享进程的资源(代码数据空间,CP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值