C/C++教程

奇安信——C++代码安全服务器开发一、二面

本文主要是介绍奇安信——C++代码安全服务器开发一、二面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一面 (45min)

  1. 自我介绍
  2. ACM取得最好的成绩
  3. 简单讲一下你的STL项目
  4. C++形成exe的过程
  5. 把可执行文件运行起来的过程

    这个我不知道诶...我觉得是类似操作系统进程之类的概念

  6. C++ static关键字的作用
  7. 把全局变量定义在头文件中会有什么问题

    面试官给了点提示,#include的作用

    可能会出现重复定义的问题,因为#include就是文本替换而已

  8. 头文件里的定义了static全局变量会怎么样

    这个我不知道诶...

  9. C++new和malloc的区别
  10. 常见的STL容器是怎么实现的
  11. vector和deque哪个访问更快一点,为什么
  12. 红黑树插入节点会导致迭代器失效吗
  13. C++11的特性有用过哪些
  14. 移动语义与右值引用
  15. 智能指针share_ptr内部实现是怎么样的
  16. share_ptr与weak_ptr的底层实现

    源码层面怎么实现?

  17. C++多态的理解
  18. 写一个线程安全的等待队列
  19. C++11的线程库有了解过吗
  20. 已经程序全部代码,已知有地方会崩溃,要怎么知道哪里会崩溃

    这个不知道诶...他说直接用调试器就行了,会自动跳到那里,可以用GDB

  21. 给定有序数组如何找到一个数出现的次数

    两次二分


反问环节

  1. 我有什么不足的地方

    增加一点调试方面的知识,其他都挺好的

  2. 工作时间是怎么样的

    9.30打卡上班,一般7-8点就没什么人了。除了加班的时候。

    周末双休

  3. 食堂,餐补,下午茶?

    没有食堂,有餐补,有下午茶

  4. 我现在面得部门在哪?

    北京

  5. 部门主要是做什么的?

    代码安全事业部。主要负责代码静态检测,负责开发和维护一个C++的一个静态检测引擎。是更偏编译的一点,不是人工智能类似的。

  6. 部门平均年龄

    最大的是85年的差不多,最小的就是校招的

  7. 部门的结构是怎么样的

    拆分成一个个组。静态检测的组分为两个,C++和JAVA。现在C++组是4个人。


二面 (30min)

  1. 虚函数的实现
  2. strcpy调用的时候会复制中间的'\0'吗
  3. 释放空指针这种编码风格会有什么危险吗?

    这我还真不知道...我只知道释放空指针是安全的。百度到了一个不知道是不是答案的回答: 可能存在*(nullptr) 会导致崩溃。

​ 但是如果不置null的话,不是可能会访问非法地址么...

  1. 我们现在有一个大型项目,已知有一行代码运行一定次数会崩溃。要怎么知道运行多少次会崩溃

    输出1到文件,看文件里面有多少个1

  2. 有一个开源程序,生成了可执行文件。让你判断这个可执行代码里面有没有出现内存泄漏,你会怎么做

    没答出来。百度了一下,大概是重载new和delete,之后全局维护一个字典一样的东西。程序退出的时候看看是否有残留的。

  3. 内存泄漏的危害
  4. 编译的基本过程

    我还以为是要我将之前的那个四个过程。但是他想细细的问代码转成汇编代码的过程,我不知道。百度了一下是语法分析和语义分析这几个过程。

  5. 解释一下什么是回调函数

    当时答得不大好。百度了一下就是:有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。

  6. 如何实现一个回调函数功能

    传入函数指针?

  7. 死锁发生的条件
  8. 进程间通信的方法
  9. 缓冲区溢出产生的注入攻击的原理
  10. 一个数组,1-n顺序存入,但是存入的时候少存了一个,导致数组偏移,怎么快速找到是哪个数缺少了
  11. 给定一个无序的数组,数组的元素数据范围在1e5以内,最快的排序方法是什么?
  12. N份药品,有一份被污染了,有一台机器可以检测。问怎么最快检测出来?
  13. N份药品,有一份被污染了,有一份试纸可以检测。问怎么最快,用最少的试纸检测出来?

    这个没答好。我感觉和上面一题没区别。之后发现,试纸是可以同一时间使用多张的。也就是说最佳的方案应该是 logN张试纸,O(1)的时间内检测出来。

    具体的话就是二进制拆分。6的二进制表示为110,那么我们就往第2和第3张试纸上滴一滴药品。之后所有的数都这么操作。最后,所有试纸变色的位数加在一起就是第几份药品。


反问环节
  1. 你跟上一个面试官是在同一个组的吗?

    是这样的

  2. 我们做的是叫代码卫士的一个软件吗?

    对的

  3. 过去具体是干什么?会有mentor么?

    有的。主要技术栈是C++。大概就是开发这个代码安全引擎。

  4. 我投的是C++服务端开发,这个算是服务器开发吗?

    代码安全引擎是跑在服务器上的。

  5. 是不是要对编译原理了解要更为深入一点?

    也不是这样的。主要更看重的是个人能力,代码能力以及思维能力。编译原理看看书也就差不多了,掌握基本概念还是要的。

  6. 上一面的面试官说的工作制度是真的吗?

    是这样的。

  7. 有房补吗?

    不知道。如果有下一面的话,可以问问hr。一般公司有的都会有的。

  8. 是在北京,那么那里都是北方人吗?

    北方人挺多的。

  9. 部门的平均年龄多大?

    我是86的,上次面试官是95的。大部分是90左右的。JAVA组的人可能更年轻点。

  10. 我这一面有什么不足的地方?

    都挺好的。

这篇关于奇安信——C++代码安全服务器开发一、二面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!