程序员面试宝典

程序员面试宝典笔记

淺唱寂寞╮ 提交于 2020-04-04 10:38:28
目录 第十一章 接口与继承 1、覆盖 第十一章 接口与继承 1、覆盖 1 A* pa = new A(); 2 pa->foo(); 3 B* pb = (B*)pa; //此时pa仍然是指向A的类对象,因此pb也指向A的类对象 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 void virtual foo() 8 { 9 cout << "A" << endl; 10 } 11 }; 12 class B :public A 13 { 14 public: 15 void virtual foo() //这里不加virtual也是可以的,只要基类中加派生类同名函数自动成为虚函数 16 { 17 cout << "B" << endl; 18 } 19 }; 20 int main() 21 { 22 A* pa = new A(); //创建指向A类对象的指针pa 23 pa->foo(); //由于pa是基类指针,所以执行基类A中的函数foo() 24 B* pb = (B*)pa; //将pa转换为B类型并创建B类型指针,最后将pa赋值给pb,但是pa仍然指向基类的类对象,所以pb也指向基类的类对象 25 pb->foo(); //执行基类A中的函数foo() 26

十年终成程序员面试宝典:数十万IT专业毕业生与程序员的求职宝典

与世无争的帅哥 提交于 2020-03-07 03:51:22
前言 揭开知名IT企业面试、笔试的核心机密,数十万IT专业毕业生与程序员的求职宝典。 本篇涉猎各大IT企业历年面试真题(包括笔试题、口试题、电话面试题、英语面试题以及智力测试等综合面试题),精心收集,精准分析,力求更细、更专、更广、更真!一书在手,求职无忧! 内容简介 本篇取材于各大公司面试真题(笔试、口试、电话面试、英语面试,以及逻辑测试和智商测试),详细分析了应聘程序员(含网络、测试等)职位的常见考点。不仅对传统的C系语言考点做了详尽解释,还根据外企出题最新特点,新增加了对友元、Static、 图形/音频、树、栈、ERP等问题的深入讲解。最后着力讲述了如何进行英语面试和电话面试,并对求职中签约、毁约的注意事项及群体面试进行了解析。面试题除了有详细解析和答案外,对相关知识点还有扩展说明。真正做到了由点成线,举一反三,对读者从求职就业到提升计算机专业知识都有显著帮助。 全篇总共分为五大部分,24章的内容,由于内容过多,所以小编只把部分知识点截图出来粗略的介绍了一下,每节都有更加细化的内容。 第1部分一求职过程 本部分将详述作为一个计算机相关专业的应届毕业生或程序员,在求职面试中 应该注意的一些问题。 古人云:凡事预则立,不预则废。机会都是垂青有准备的人的。为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完

《程序员面试宝典》解题报告1-牛客

馋奶兔 提交于 2020-01-18 04:27:31
比较经典的一些题: 4、6、7、8、9、10、11、12、13、19、20、22、25、28、29、30 1.确定字符互异 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。 测试样例: “aeiou” 返回:True “BarackObama” 返回:False import java . util . * ; public class Different { public boolean checkDifferent ( String iniString ) { // write code here char [ ] arr = iniString . toCharArray ( ) ; Arrays . sort ( arr ) ; for ( int i = 1 ; i < arr . length ; i ++ ) { if ( arr [ i ] == arr [ i - 1 ] ) return false ; } return true ; } } 2、原串翻转 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下

JAVA程序员面试宝典

一笑奈何 提交于 2020-01-17 01:15:20
程序员面试之葵花宝典 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题,而6. 只是选择其中的一部分,7. 暂时不8. 用部分细节。抽象包括两个方面,9. 一是过程抽象,10. 二是数据抽象。 11. 继承:继承是一种联结类的层次模型,12. 并且允许和鼓励类的重用,13. 它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,14. 这个过程称为类继承。新类继承了原始类的特性,15. 新类称为原始类的派生类(子类),而16. 原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,17. 并且类可以修改或增加新的方法使之更适合特殊的需要。 18. 封装:封装是把过程和数据包围起来,19. 对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,20. 即现实世界可以被描绘成一系列完全自治、封装的对象,21. 这些对象通过一个受保护的接口访问其他对象。 22. 多态性:多态性是指23. 允许不同24. 类的对象对同25. 一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,26. 很好的解决了应用程序函数同27. 名28. 问题。 2、String是最基本的数据类型吗?

《程序员面试宝典》解题报告2-牛客

有些话、适合烂在心里 提交于 2019-12-30 13:11:37
比较经典的一些题:31、32、37、38、40、41、44、45、46、47、48、49、50、51、52、54、56、57、58、59、60 31、找出缺失的整数 题目描述 数组A包含了0到n的所有整数,但其中缺失了一个。对于这个问题,我们设定限制,使得一次操作无法取得数组number里某个整数的完整内容。唯一的可用操作是询问数组中第i个元素的二进制的第j位(最低位为第0位),该操作的时间复杂度为常数,请设计算法,在O(n)的时间内找到这个数。 给定一个数组number,即所有剩下的数按从小到大排列的二进制各位的值,如A[0][1]表示剩下的第二个数二进制从低到高的第二位。同时给定一个int n,意义如题。请返回缺失的数。 测试样例: [[0],[0,1]] 返回:1 import java . util . * ; /* 位运算的一种思路: 另外的一道题,找出不重复的数字 任意一个数字与本身异或都是0 把0~n都异或一次,然后再与数组中的数异或,结果就是缺失的整数 但是现在表示成了二进制,所以不能用。 已经排好序,所以偶数奇数交替,下标奇偶与数字奇偶一样,缺失的那个数就是不一样的那个下标值。 还有一种解法是数学方法。 * */ public class Finder { public int findMissing ( int [ ] [ ] numbers , int n )

程序员面试宝典:输入一行字符串,找出其中出现的相同且长度最长的字符串----后缀数组求解

半腔热情 提交于 2019-12-23 05:53:06
更多关于最长子串:http://blog.csdn.net/szu030606/article/details/8088596 #include<iostream> #include<string> #include<string.h> using namespace std; int mycmp( const void * a, const void * b ) {   return strcmp( *( char ** )a, *( char ** )b ); } int cmp( char * str1, char * str2 ) {   int len = 0;   while( *str1++ == *str2++ )   {     ++len;   }   return len; } void sub_str( char ** a, int n ) {   int max = 0;   int len = 0;   int index =0;   int i;   char * tmp;   for( i = 0; i < n-1; ++i )   {     len = cmp( a[i],a[i+1] );     if( len > max )     {       max = len;       index=i;     }   }   cout<<