zoukankan      html  css  js  c++  java
  • 读书心得

    本书源码下载

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

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

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

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

    应聘者提问:

    面试需要的基础知识  P20

    C++

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

    内存管理

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

    sizeof类  P22

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

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

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

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

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

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

    //二分查找
    #include <iostream>
    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

  • 相关阅读:
    webpack浅析
    MongoDB简易
    async函数
    react -- context
    抓包移动端方法
    stateless 无状态组件
    移动端适配
    JS和JQuery获取和修改Label的值的示例代码
    HTML DOM querySelector() 方法
    filter
  • 原文地址:https://www.cnblogs.com/raichen/p/5625938.html
Copyright © 2011-2022 走看看