1、判断代码对错:给你一段代码,一般有一个函数,然后执行该函数,问你对错,若是错误指出错误的地方。这种题目我个人感觉很考个人敲代码的熟练程度和对代码的敏感度,如果你对代码很敏感的话,直觉就会告诉你这段代码有问题。
2、写出代码运行结果:给你一段代码,然后最终要求return某个参数,一般来说这个参数加了很多*或者&。这种题目很坑人的,一不小心就会做错。
例题1:
int main(){
char *ptr,arr[] = "12345678";
ptr = arr;
ptr += 5;
printf("%s",ptr);
return 0;
}
输出结果是:678
解析:*ptr是指针,指向数组arr[]的头地址;%s输出字符串,从该地址一直往后输出字符串;
ptr+5之后指向arr数组中的“6”,所以将“678”作为字符串输出。
如果ptr没有+5这一步,那么他直接会输出“12345678”
例题2:
void main (void) {
int x;
x = printf(“I See, Sea in C”);
printf(“x=%d” , x);
}
程序完成后x的值是什么?
输出结果:15
解析:正确时返回输出的字符总数,错误时返回负值,输入输出流错误标志将被置值。
3、简答题:主要是问一些基础概念,特别喜欢问某些概念的区别。
题目:static_cast 、dynamic_cast、reinterpret_cast和const_cast的区别?
解析:static_cast运算符用于将表达式的值强制转换为指定的类型,但没有运行时需要进行类型检查来保证转换安全性。
dynamic_cast运算符用来处理一种“安全向下转换”,可以在运行时决定真正的转换类型。如果是安全的(也就是说:如果基类指针或者引用确
实指向一个派生类对象)这个运算符会传回适当转型过的指针;如果不安全,这个运算符会传回空指针(也就是说:基类指针或者引用没有指向
一个派生类对象)。
reinterpret_cast运算符用于底层的强制转型,在类型之间指向的内容不做任何类型的检查和转换。导致实现依赖(就是说,不可移植)的结
果,例如:将一个指针转型为一个整数。这样的强制类型在底层代码以外应该极为罕见操作结果只是简单的从一个指针到别的指针的值的二进制
拷贝。
const_cast运算符用来将对象的常量性删除,使常量可以被修改。例如:常量指针被转化成非常量的指针,并且仍然指向原来的对象;常量引
用被转换成非常量的引用,并且仍然指向原来的对象;
从学习编程的角度来说,我觉得真的需要天赋和兴趣爱好,如果仅仅是为了面试,那一定要多练该类题目。
技术HR有1到2位,我那时只有一位技术HR。
1、一般来说,面试官会先让你做一个自我介绍,我提前先准备了一下,大概内容如下:
自我介绍:尊敬的面试官,您好,我叫+++,来自广东梅州,今年6月完成在广州大学计算机科学与技术专业的学习,并已领取到毕业证书和学士学位证书。
社团经验:在大学期间,曾担任团支书并在团委学生会工作,曾组织过多次班级和社团活动,有较丰富的社团活动组织经验。
项目经历:在四年本科期间,曾参与过多次软件开发项目,能较熟练使用C++编程语言进行软件开发,大一时,曾使用C++进行贪吃蛇、五子棋等一些简单的小游戏的开发;在大二期间对淘宝、京东等网站商城很感兴趣,自学过HTML、CSS、JavaSript等前端语言,结合JSP技术、mysql数据库、Tomcat服务器等设计过鲜花售卖商城(这个其实可以不用的,但为了体现自己大学学了很多东西也加进去了);在大三和大四期间做了基于C++语言的毕业设计,主要是基于文本提取算法、文本分析算法、字符串匹配算法、TF-IDF算法,并结合FFMPEG多媒体音视频提取工具包实现的电影预告片剪辑软件。
结尾:我的介绍到此结束,谢谢。
2、在进入面试之前并在面试过程中,技术HR会看你做的笔试题目,然后根据你做的笔试题来进行相应提问,我在2020年7月14号那天笔试做得很渣渣,所以被怼得很惨。因为我笔试做得很糟糕,所以技术HR没有问太多笔试上的题目,就问了一下最后一个分析题。
Question:现有一个游戏需要实现玩家等级排位,请详细描述具体实现过程:
1.将等级前1000名的玩家按等级显示到榜单上,若等级相同,则先到达该等级的排到前面;
2.若是玩家有升级,该如何处理?
MyAnswer:需要对所有玩家进行排序,然后将前1000名的玩家按等级显示,因为考虑到玩家等级若有相同的情况,所以我考虑用“时间戳”来
标记达到该等级的时间,按照时间先后来进行排位;若是玩家有升级,首先我需要判断玩家是否上榜,所以先跟榜单上最后一名玩家的等级进
行对比,若是需要上榜则判断插入位置直接进行插入到榜单表中,若是不能上榜,则不需要对榜单表进行修改。
3、技术HR除了问笔试的题目之外,他会问一些额外的一些题目,这些题目一般都比较基础,大家可以从网上的面经上训练,我那时问的题目都是经典的C++面试题。
Question1:C++的多态是如何实现的?
Answer1:主要是利用虚函数实现多态。
Question2:虚函数和纯虚函数的区别?
Answer2:虚函数有定义并有相应的实现代码,使用虚函数是为了允许用基类的指针来调用子类的这个函数;而纯虚函数只有定义没有实现,定
义纯虚函数是为了实现一个接口,起到一个规范的作用,是一个不被实现的函数。
Question3:含基类的构造函数和析构函数如何实现?
Answer3:构造函数和析构函数都不能被继承,其具体实现过程如下:先执行基类的构造函数,再执行派生类的构造函数中调用基类的构造函
数,然后执行派生类的析构函数销毁派生类对象,最后执行基类析构函数销毁基类对象。
Question4:什么是深拷贝?它与浅拷贝的区别在哪里?
Answer4:如果拷贝的只有值没有引用,那浅拷贝和深拷贝没有差别,都会将原有对象复制一份,产生一个新对象,对新对象里的值进行修改不
会影响原有对象,新对象和原对象完全分离开。如果拷贝的对象里包含引用,那浅拷贝和深拷贝是不同的,浅拷贝虽然将原有对象复制一份,
但是依然保存的是引用,对新对象的引用中的值进行修改,会改变原对象中的值,新对象和原对象并没有完全分离开。而深拷贝则不同,
它会将原对象里的引用也新创建一个,然后放的是新的引用,将新对象和原对象完全分离开。
Question5:快速排序的时间复杂度?最好的情况下如何?最坏的情况下如何?
Answer5:O(nlogn),最好的情况是O(nlogn),最坏的情况是O(n^2)
PS:快速排序:通过一趟排序将数据分成两部分,其中一部分的所有数据比另一部分的任一个数据都要小,然后再对每部分数据进行快速排
序,整个过程可用递归来实现。
十大常用的排序算法
简单来说呢,能告诉你的HR都会坦白跟你说,不能告诉你的,HR一定很老奸巨猾在跟你扯来扯去就是不正面回答。个人建议期间一定要问是否有加班,是经常加班还是项目紧的时候偶尔加班,还有工作制度(995还是996)一定要问清楚,这个我觉得是最重要的。2020年7月14号去的一家比较大的游戏公司面试C++软件开发,人力HR倒是很直白,几乎把我想了解的都跟我说了,但真不真实我个人持怀疑的态度。
1、首先,他先跟我介绍了一下公司的具体情况,然后先问:“我对这个职位是如何看待的,为什么选择应聘这个岗位?”
我回答他“因为C++比较难,并且在公司实际应用中涉及到很多底层的东西,简单来说C++门槛很高,顺利的话都需要2~3年才能踏入这个门槛,并且C++需求比较少,但是我大学四年都学的是C++,对它比较熟悉,并且在大四毕业设计的时候,也用的是纯C++开发的,虽然大学也有学其他的前端和后端网站设计这些,但综合考虑之后还是选择走C++软件工程师这条路线。”
2、然后他问我:“大四的时候是否有做过职业规划?”
我回答说“有,因为C++门槛高,在我选择走这条路之前,我希望5年之后自己能入门,使自己通过不断学习技术得到质的飞跃,同时薪酬也能跟着有一个质的飞跃。”
他接着追问:“你希望5年之后你的年薪是多少?”
我回答说“25~30W。”
3、后面他就具体跟我谈公司的薪酬和各种福利制度。他先说了福利待遇:每个月会有400元餐补,400元交通补,还有住房补贴这一类的,每个季度还有450元的季度补贴,总的来说就是一个月大概会有1000多元的补贴。
4、再然后就谈到薪酬,他问我“你简历上写的期望薪酬是8~10K一个月,有没有具体数值呢?”
我回答说:“如果要一个具体数值的话,是10K也就是税前1万元。”(PS:你或许疑惑怎么不谈税后?我想说的是没必要问税后,这年代没人会跟你聊税后到手的工资,一聊税后工资就很低了。)
后面他就说了薪酬情况“新员工入职后有3个月的试用期,试用期间的工资是0.8*转正后的工资,就是正式工资的8折,然后如果面试顺利,我们互相都没问题的话,8月份会给你交社保,一年的话工资在13~15W,并且我们公司是实行13薪的(一年领13个月的工资)。”
工资的话其实是有点高于当时我在招聘上看到的了,当时的是11~20W,当然这个跨度有点大,我是直接看最小的11W,这个才有用的,不要看上限。
5、最后他跟我聊 了一下工作时间,他可能是想给我surprise,他先问我猜测的工作时间是怎样的?
我回答:“996?甚至是经常加班?”(996意思就是早上9:00到晚上9:00,一周上6天班)
他回答:“我们公司995,周末双休,只有在游戏要上线的时候才会加班。”
我说:“这个是超出我的预计了,我以为会经常加班。”(其实我是不信的,游戏公司怎么可能995,他说偶尔加班,我非常怀疑,应该是怕吓走我。)
总的来说呢,人力HR的面试自己要抓住重点去问,你先听他讲完,然后HR讲完之后再问那些你想了解的问题,上面的都是有些我自己问的,甚至谈到薪酬最开始HR都模模糊糊的没有个明话,如果你问的问题HR没有正面回答,那你接下来要强调一下再问一下你的问题,因为也有可能HR没有听明白(实际上很多是听明白了但不想告诉你)。如果再问都没有透露出来,那么很可能他是一定真的不想告诉你,否则他至少会透露出一点信息。
*PS:我这个面试估计是凉凉,因为笔试面和技术面都很糟糕,即使跟人力HR聊得很嗨,但也改变不了失败的结局,今年毕业生真的不好找工作,唉,祝我好运吧!接着面试,希望能不断进步,也祝各位早日拿到offer,共勉。 *
写于2020年7月14日晚-15日凌晨 广州大学城北亭村