题记:前一阵子跟风投了网易的游戏测试,这边过去好像直接算内推的,没有笔试。昨天通知我去面试,百度地图真是坑爹,输入网易地址 网商路599号 给出的是阿里巴巴的位置,害我找了一会儿。
过程:先是自我介绍,然后开始问问题,3个人,一个主问,一个插两句,一个坐在那里对简历发呆。然后就问我平常用什么语言,答曰,以前C,现在C++
问题:
1、C++里虚函数的作用
虚函数好像一直问的比较多,这里小总结一下:
函数可以分为:类的成员函数(非静态成员函数、静态成员函数),非类的成员函数(普通的函数、虚函数)。根据这种函数的分类,就知道了函数绝对是不能同时为虚函数以及静态成员函数的。
虚函数还可以继续细分为纯虚函数和普通的虚函数。普通的虚函数必须要有函数的实现,必须有一个关键字来修饰:virtual ,同时不能有static修饰。
纯虚函数必须在普通的虚函数基础上加上“=0”。默认情况是只有定义,而无需实现的,即只是定义一个接口(当然也可以实现,这时实现认为是默认的一种状态显示),同时包含了纯虚函数的类表明该类是一个抽象类,不能定义该类的对象,也就是说该类被定义成基类,是要被继承的,通过继承类来完成基类对象的生成。
虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。换句话说就是实现“动态联编”,好处是在程序的运行阶段动态地选择合适的成员函数,因为要在运行时才能确定,所以效率稍低。
实现方式:在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,且与虚函数具有相同的形参个数和形参类型;如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。这样就实现接口的统一,不同定义过程。
2、C里面的 Struct 和 C++ 里的 Class 的异同
这里分两种情况来回答
(1)C的struct与C++的class的区别。
C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。
(2)C++中的struct和class的区别。
访问权限上:class中默认的成员访问权限是private的,而struct中则是public的。
继承上:class继承默认是private继承,而struct继承默认是public继承。
其他:“class”这个关键字还用于定义模板参数,就像“typename”,但关键字“struct”不用于定义模板参数。
3、写一个程序,给定一个数 x ,输出不大于它的二的几次幂
这个很简单了,就是 2^n<=x ,然后输出 n 么,就几行代码。
4、说说快速排序的思想
前面有篇文章已经总结过了,点这里。
5、面向对象和面向过程的区别
面向过程是自顶向下逐步编程,就是分析出解决问题所需的步骤,其最重要的是模块化的思想方法。
面向对象的方法主要是把事物给对象化,包括其属性和行为。抽象出对象的目的并不在于完成某个步骤,而是描述其在整个解决问题的步骤中的行为。
简单点说就是,面向过程就是你把代码封装成函数,然后依次去做一件事情;面向对象就是你把要做的事情抽象成对象,告诉对象去做。面向对象三大特性(封装,继承,多态)使得在做复杂的事情的时候效率和正确率得到保证。
6、C++多态的概念
多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态性是通过虚函数来实现的,只有重写了虚函数的才能算作是体现了C++多态性。多态的目的则是为了接口重用,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。关于多态,这篇文章讲的很不错。
7、简要说下sift特征的提取(所有问题里唯一一个和简历上有点相关的,晕)
前面也说过了,点这里。
8、还有balabala的一些零碎的东西,就是一些C++的基本知识
总结:总体感觉,问的问题一般,3个面试官和我们差不多大,对他们的穿着打扮第一印象就是小屌丝,还有,3个人感觉有点浪费资源;
其次,没有抓简历的要点去问,想到哪问道哪,比较不专业;
再次,在面的过程中突然觉得自己对这方面不是很感兴趣,他们也表示做开发方向的基本只招计算机的,感觉测试没多大发展前途;
最后,选择自己喜欢的比较重要,不管有木有二面,不想去了,不要浪费时间在不喜欢的上面。
转载请注明出处:http://blog.csdn.net/xiaqunfeng123/article/details/25422491