本文主要是介绍奇安信——C++代码安全服务器开发一、二面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一面 (45min)
-
自我介绍
-
ACM取得最好的成绩
-
简单讲一下你的STL项目
-
C++形成exe的过程
-
把可执行文件运行起来的过程
这个我不知道诶...我觉得是类似操作系统进程之类的概念
-
C++ static关键字的作用
-
把全局变量定义在头文件中会有什么问题
面试官给了点提示,#include的作用
可能会出现重复定义的问题,因为#include就是文本替换而已
-
头文件里的定义了static全局变量会怎么样
这个我不知道诶...
-
C++new和malloc的区别
-
常见的STL容器是怎么实现的
-
vector和deque哪个访问更快一点,为什么
-
红黑树插入节点会导致迭代器失效吗
-
C++11的特性有用过哪些
-
移动语义与右值引用
-
智能指针share_ptr内部实现是怎么样的
-
share_ptr与weak_ptr的底层实现
源码层面怎么实现?
-
C++多态的理解
-
写一个线程安全的等待队列
-
C++11的线程库有了解过吗
-
已经程序全部代码,已知有地方会崩溃,要怎么知道哪里会崩溃
这个不知道诶...他说直接用调试器就行了,会自动跳到那里,可以用GDB
-
给定有序数组如何找到一个数出现的次数
两次二分
反问环节
-
我有什么不足的地方
增加一点调试方面的知识,其他都挺好的
-
工作时间是怎么样的
9.30打卡上班,一般7-8点就没什么人了。除了加班的时候。
周末双休
-
食堂,餐补,下午茶?
没有食堂,有餐补,有下午茶
-
我现在面得部门在哪?
北京
-
部门主要是做什么的?
代码安全事业部。主要负责代码静态检测,负责开发和维护一个C++的一个静态检测引擎。是更偏编译的一点,不是人工智能类似的。
-
部门平均年龄
最大的是85年的差不多,最小的就是校招的
-
部门的结构是怎么样的
拆分成一个个组。静态检测的组分为两个,C++和JAVA。现在C++组是4个人。
二面 (30min)
-
虚函数的实现
-
strcpy调用的时候会复制中间的'\0'吗
-
释放空指针这种编码风格会有什么危险吗?
这我还真不知道...我只知道释放空指针是安全的。百度到了一个不知道是不是答案的回答: 可能存在*(nullptr) 会导致崩溃。
但是如果不置null的话,不是可能会访问非法地址么...
-
我们现在有一个大型项目,已知有一行代码运行一定次数会崩溃。要怎么知道运行多少次会崩溃
输出1到文件,看文件里面有多少个1
-
有一个开源程序,生成了可执行文件。让你判断这个可执行代码里面有没有出现内存泄漏,你会怎么做
没答出来。百度了一下,大概是重载new和delete,之后全局维护一个字典一样的东西。程序退出的时候看看是否有残留的。
-
内存泄漏的危害
-
编译的基本过程
我还以为是要我将之前的那个四个过程。但是他想细细的问代码转成汇编代码的过程,我不知道。百度了一下是语法分析和语义分析这几个过程。
-
解释一下什么是回调函数
当时答得不大好。百度了一下就是:有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。
-
如何实现一个回调函数功能
传入函数指针?
-
死锁发生的条件
-
进程间通信的方法
-
缓冲区溢出产生的注入攻击的原理
-
一个数组,1-n顺序存入,但是存入的时候少存了一个,导致数组偏移,怎么快速找到是哪个数缺少了
-
给定一个无序的数组,数组的元素数据范围在1e5以内,最快的排序方法是什么?
-
N份药品,有一份被污染了,有一台机器可以检测。问怎么最快检测出来?
-
N份药品,有一份被污染了,有一份试纸可以检测。问怎么最快,用最少的试纸检测出来?
这个没答好。我感觉和上面一题没区别。之后发现,试纸是可以同一时间使用多张的。也就是说最佳的方案应该是 logN张试纸,O(1)的时间内检测出来。
具体的话就是二进制拆分。6的二进制表示为110,那么我们就往第2和第3张试纸上滴一滴药品。之后所有的数都这么操作。最后,所有试纸变色的位数加在一起就是第几份药品。
反问环节
-
你跟上一个面试官是在同一个组的吗?
是这样的
-
我们做的是叫代码卫士的一个软件吗?
对的
-
过去具体是干什么?会有mentor么?
有的。主要技术栈是C++。大概就是开发这个代码安全引擎。
-
我投的是C++服务端开发,这个算是服务器开发吗?
代码安全引擎是跑在服务器上的。
-
是不是要对编译原理了解要更为深入一点?
也不是这样的。主要更看重的是个人能力,代码能力以及思维能力。编译原理看看书也就差不多了,掌握基本概念还是要的。
-
上一面的面试官说的工作制度是真的吗?
是这样的。
-
有房补吗?
不知道。如果有下一面的话,可以问问hr。一般公司有的都会有的。
-
是在北京,那么那里都是北方人吗?
北方人挺多的。
-
部门的平均年龄多大?
我是86的,上次面试官是95的。大部分是90左右的。JAVA组的人可能更年轻点。
-
我这一面有什么不足的地方?
都挺好的。
这篇关于奇安信——C++代码安全服务器开发一、二面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!