南京某外企开发面经

一面:是有个两个面试官,在一面结束后,比较年轻的面试官送我到楼下等待二面,闲聊了下,他才工作两年是南大,感觉这个面试官人好好呀,还说我面试他们两个面试官都挺满意的。虽然不知道是不是真实情况,但是也确实缓解我的一些紧张吧。面试过程中主要围绕简历上的内容进行的。先对自己的课题和实习的事情进行了简单的描述和闲聊。后面问了操作系统,数据库,网络,C++,设计模式各个方面的问题。操作系统(进程和线程区别,进程间通信的方式,介绍信号量的PV操作,系统调用,死锁的条件,预防死锁的方法)。网络(NAT,路由转发,路由协议)。数据库(我的数据库一直都是的短板,问了我索引的优点,数据完整性的概念,drop和delete区别)。C++(虚函数概念,好处)。Linux(awk操作)还写了一个简单的代码,字符串翻转。设计模式(写一个单例模式的代码,自己介绍一个设计模式)这一面大概问了50分钟吧。大部分都打出来了,但是,很多都没有答全。然后还问了一个团队协作的经历。整个过程,面试官都是非常友好的

补充一些自己不足的知识点。

1 死锁预防:针对死锁产生的必要条件,然后破坏这些条件。
破坏占有并等待的条件:一次性分配资源,申请分配需要的全部资源。
破坏不可抢占条件:如果占有了某些资源的进程请求资源被拒绝,这个进程就要释放最初占有的资源
如果进程请求当前被另一个进程所占有的资源,操作系统可以抢占另一个进程,要求释放资源。
破坏循环等待条件:对资源进行编号,资源的申请要必须按照顺序提出

2 NAT协议
Network Address Translation,网络地址转换

路由转发

二面:是一个manager面试。刚开始问了我两个英文问题,自我介绍,为什么选择在南京工作?这种问题用英文回答还是比较简单的,自我介绍在之前也简单了准备了一下。
问题:写了一个斐波拉契数列的代码,要求用递归,然后围绕这个代码问了这个代码会存在什么问题。就是栈溢出的问题,然后详细讲讲为什么,以后栈中是如何存放变量的。实时系统与非实时系统的区别。手机的cpu与笔记本的cpu在架构上面有什么区别。你常用的Linux命令有那些。输入一个网址这期间发生的过程。介绍你的项目,然后问了下实现的细节,用到的数据结构吧。现在有没有offer了,你近5年的一个规划。

递归层数太多引起栈溢出:函数调用的参数是通过栈空间来传递的,在调用过程中会占用线程的栈资源。而递归调用,只有走到最后的结束点后函数才能依次退出,而未到达最后的结束点之前,占用的栈空间一直没有释放,如果递归调用次数过多,就可能导致占用的栈资源超过线程的最大值,从而导致栈溢出,导致程序的异常退出。

实时系统与非实时系统区别:实时系统(Real-time operating system,RTOS)的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。换句话说,系统设计时所有的事件都可以在指定的时间内得到响应。首先实时操作系统有着分时操作系统无法比拟的响应时间确定性,实时操作系统从调度器算法,到中断响应系统,到消息传递机制等所有的核心算法时间复杂度都是O(1),它表示系统的响应速度不依赖于系统任务的多少,负载的轻重,而只依赖于优先级的设计,就算当前系统满负荷运行,优先级高的事件发生后,系统还将会在指定的时间内立即响应事件。由于这种设计理念和算法上的优势,根据相关数学理论,分时系统在负载严重的情况下是不能通过提升处理器性能来获得确定的响应时间。

手机与电脑CPU架构区别:
1、手机和电脑cpu的架构不一样,一个是ARM一个是X86架构。
2、ARM CPU基于精简架构的设计思想减少了大量CPU内部的指令集,造成ARM CPU性能至今一直都达不到英特尔X86 CPU的水平

三面:说的是群面,其实就是一群人进去,HR一个一个问问题,最开始进行简单的自我介绍,回答HR想要了解的一些信息。后面每个问了一个英语问题,这个问题也不难,问问你从哪些途径了解到我们公司的招聘,你会如何选择以后工作的公司等等。好好说,多说点。就这样结束了面试。3个面试都是一天进行的,一面后马上就进行二面,等三面等了挺长的时间的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值