博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读书心得
阅读量:4498 次
发布时间:2019-06-08

本文共 2253 字,大约阅读时间需要 7 分钟。

本书源码

初级程序员偏向考察算法和数据结构,高级程序猿关注专业技能和项目经验

 

行为面试 -> 技术面试 -> 应聘者提问  P5

行为面试:项目经验介绍(简短项目背景->自己完成任务->为了完成任务做了什么,怎么做->自己的贡献)

技术面试:链表和二叉树,二分查找,归并排序,快速排序;程序的鲁棒性、效率优化

应聘者提问:

 

面试需要的基础知识  P20

C++

面向对象特性,构造函数,析构函数,动态绑定,常用设计模式

内存管理

程序性能,多线程,程序安全

 

sizeof类  P22

sizeof空类 = 1    本来应该是0,但是要求在内存中占有一定空间(编译器决定),VS空类占1字节的空间

添加构造或析构函数  不变,添加构造或析构函数知道函数地址即可,与实例无关

添加虚函数  类型的实例中添加指向虚函数表的指针大小

 

复制构造函数的参数必须是本类型的引用变量  P24

 

面试官都期待熟练写出二分查找代码  P63

注意要处理key不在数组中的情况

//二分查找#include 
using namespace std;//递归int BinarySearch(int *array, int start, int end, int key){ if (start > end) //一定要加,若key没找到返回-1 return -1; int mid = (start + end) / 2; if (key == array[mid]) return mid; else if (key > array[mid]) return BinarySearch(array, mid + 1, end, key); else return BinarySearch(array, start, mid - 1, key);}//循环int BinarySearch2(int *array, int arrSize, int key){ if (array == NULL || arrSize <= 0) return -1; int start = 0; int end = arrSize - 1; int mid = 0; while (start <= end) //一定要有等号 { mid = (start + end) / 2; if (key == array[mid]) return mid; else if (key > array[mid]) start = mid + 1; else end = mid - 1; } return -1; //一定要加,若key没找到返回-1}int main(){ int a[10]; for (int i = 0; i < 10; i++) a[i] = i; cout << BinarySearch(a, 0, 9, 2) << endl; cout << BinarySearch2(a, 10, 2) << endl; system("pause"); return 0;}

 

快速排序是考察重点  P63

 

递归的实现要比循环简单的多,如果没有要求经可能多采用递归

递归是函数调用自身,而函数调用有时间和空间的消耗:每一次函数调用,都需要在内存栈中分配空间以保存参数,返回地址及临时变量,而从栈里雅茹数据和弹出数据都需要时间

 

代码规范性  P86

最好使用完整的英文单词组合命名变量和函数

错误处理方法:返回值;全局变量;异常

判断小数误差切记不能用 == ,因为计算机内表示小数时(包括float和double型小数)都有误差。判断两个小数是否相等,只能判断它们之差的绝对值是否在一个很小的范围内

 

编码前讲自己的思路是一个考察指标,举例子画图

 

C/C++程序猿要养成采用引用(或指针)传递复杂类型参数的习惯。如果采用值传递的方式,从形参到实参会产生一次复制操作。这样的复制是多余的操作,应该避免  P162

 

二分查找的partition函数可以用来寻找n个数中第k大的数字,这点常被用到,见面试题29、30

 

应聘者会被问一些需求不明确的问题,解决这些问题需要应聘者和面试官沟通

 

考察应聘者学习能力:一是询问应聘者最近再看什么书或者在做什么项目、从中学到哪些新技术;二是抛出一个新概念,看能否较短时间内理解这个新概念并解决相关问题

 

常见解题技巧:

数组从后向前复制,能减少移动次数,提高效率

快排的partition可以用于查找数组中第K大的数字

看到排序序列一定要想到二分查找

位运算一个技巧:把一个整数减去1后再和原来的数做与运算,得到的结果相当于把整数的二进制表示中最右边一个1变为0。很多二进制的问题都可以用这个思路解决。

一个指针解决不了要有两个指针的意识,要么一个起点(两个指针速度不一样),要么一前一后

全排列问题 swap fun swap

 

转载于:https://www.cnblogs.com/raichen/p/5625938.html

你可能感兴趣的文章
html5 聊天 宿舍 宿舍列表
查看>>
音乐的作曲形式
查看>>
matlab 各种文件的读取(及读写问题的解决)
查看>>
ie9下 “__flash__removeCallback”未定义
查看>>
Java虚拟机垃圾回收:基础点(转载)
查看>>
第五章项目----租房网
查看>>
CodeForces 834C The Meaningless Game (机智)
查看>>
深入分析 Java I/O 的工作机制(转)
查看>>
Python高级特性:迭代器和生成器 -转
查看>>
修炼编程的内功
查看>>
Ext JS - Ext.grid.feature.Grouping 分组表格
查看>>
ZConfig手册
查看>>
linux用户和用户组管理详解
查看>>
Jmeter之集合点
查看>>
JavaScript 基础,登录前端验证
查看>>
SQLite帮助类SQlitehelper 实现对SQLite数据的增删改查
查看>>
【转】字符、字符数组、char、string的区别分析
查看>>
HDU-3660 Alice and Bob's Trip 树形dp
查看>>
OpenLayers 搭建跨域代理(WFS)
查看>>
关于cros解决跨域的一个小例子(判断IP地址选择加不加跨域)
查看>>