总共半个小时的样子,主要是问了C++ 操作系统 计网的内容;我简历上没写熟悉C,但前面还是问了不少1.C/C++有哪些操作字符串的函数?只想起了strcpy、strncpy、strcat2.C函数函数调用的过程?用到了哪些栈指针?(当时没回答上,这里就收集资料拓展一下)栈地址是由高至低拓展的,和堆相反。函数调用过程主要包括以下三个阶段( 这里以C/C++为例子,go中并未用到寄存器)1.函数传参:c/c++中规定了函数参数的压栈顺序是从右至左,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等, 函数的参数分别存到对应的寄存器中(例如edi、esi)2.函数执行3.返回值返回, 使用寄存器来保存返回值。部分常用寄存器3.动态链接和静态链接的区别动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入; 而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。4.进程和线程的区别?进程是资源分配的最小单位,线程是CPU调度的最小单位,系统并没有直接区分,只是把线程当做一个轻量级的进程。5进程间通信的方式?管道、信号量、共享内存、socket、消息队列6.有哪些方法实现多线程的互斥同步?你用过什么实现?信号量、锁(没说全,还有变量和共享内存也可以)7.为什么用信号量?信号量和锁的区别是什么?信号量能控制对临界资源访问的数量、锁不能控制8.了解TCP和UDP吗?介绍一下TCPTCP:三次握手、四次挥手、拥塞控制、流量控制、超时重传、UDP:面向无连接、不保证可靠9.了解socket吗?介绍一下过程?客户端:socket、connect服务端:建立socket、bind、listen、accept,顺便拓展了一下全连接队列和半连接队列10.如何查询一个主机是否在连接?一开始这个问法我没能理解,我想的是查询这个是否在tcp连接?想了想说了netstat 可以来查询是否在连接,但面试官说不是,问我知道ping吗?我说知道,他说用ping就能查询,我说ping不是用来判断主机之间是否网络联通吗,为什么能判断主机时间是否有连接,他说他问的是这个意思。11.ping是什么实现的?ICMP是哪一层协议?TCP呢?ICMP,网络层协议,TCP是传输层12.了解哪些设计模式?单例、工厂、观察者、代理13.说说这几种设计模式他们的优缺点看过,但让我说优缺点就感觉很不好说,感觉应该少说两个的-.-现在重新总结一下优缺点:单例模式优点:系统提供了唯一实例, 节约系统资源。缺点: 扩展略难,单例模式中没有抽象层,且单例的职责过重。工厂模式:优点:系统的拓展性很好,只需要关注对象的使用,不需要关注对象的创建,符合开闭原则。缺点:需要在系统中增加相应的多个类,增大了系统复杂度。抽象工厂模式:优点:多了一个产品族的概念,多了一个管理层次。缺点:增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了“开闭原则”。代理模式:优点:降低系统耦合度,降低的代码复杂度,如果要增加代理操作,可以仅修改代理代码。缺点:代理模式会造成系统中类的个数增加, 比不使用代理模式增加了代理类, 系统的复杂度增加观察者模式:优点:观察者模式支持广播通信,观察目标会向所有已注册的观察者对象发送通知,简化了一对多系统设计的难度。观察者模式满足“开闭原则”的要求,增加新的具体观察者无须修改原有系统代码,在具体观察者与观察目标之间不存在关联关系的情况下,增加新的观察目标也很方便。缺点:如果一个观察目标对象有很多直接和间接观察者,将所有的观察者都通知到会花费很多时间。如果在观察者和观察目标之间存在循环依赖,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。面试官说我前面的可能不太熟悉,但网络部分还掌握的比较好,我说挺久没去用C/C++了,忘了挺多。然后反问面试群里说7-14天给结果,感觉应该是凉了。
点赞 17
评论 3
全部评论

相关推荐

07-29 13:49
深圳大学 运营
字节我爱你
JamesGosli...:秋招还是实习啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:29
凉风落木楚山秋:他们两都收获了流量,只有爷浪费了时间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务