昨天刚做了阿里的笔试,两道编程题都不太会做,本来以为没下文了,结果...
今天晚上正在吃饭突然接到阿里电话面试,桌上的饭菜突然就不香了呢......
自我介绍
上来就先让我自我介绍,慌乱之中赶紧清了清嘴里的食物(手动笑哭...),虽然没有提前准备过讲稿,但家中有粮,心里不慌,拿出简历现讲^.^
大概就是讲了讲个人项目经历以及获得荣誉吧。不再细说了,赶紧回忆一下知识点。
数据结构的知识
我是非计算机科班出身啊啊啊啊!!!数据结构纯自学。。还没学完555
一、哈希表
hash表的实现主要包括构造哈希和处理哈希冲突两个方面:
对于构造哈希来说,主要包括直接地址法、平方取中法、除留余数法、随机数法等。
对于处理哈希冲突来说,最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。
在链地址法中,哈希表的桶个数使用质数,可以最大程度减少冲突概率,使哈希后的数据分布的更加均匀。如果使用合数,可能会造成很多数据分布会集中在某些点上,从而影响哈希表效率。
二、二叉树
深度优先遍历:
先序遍历:先访问根节点,然后再前序遍历其左子树,再前序遍历其右子树。
中序遍历:先中序遍历左子树,然后访问根节点,最后中序遍历右子树。
后序遍历:先后序遍历左子树,再后序遍历右子树,最后访问根节点。
广度优先遍历:
又叫层序遍历,从树的第一层,也就是根节点开始从上而下对每一层依次访问,在每一层中,从左往右访问结点。
三、排序
快速排序:
堆排序:
操作系统的知识
进程和线程区别
C++的知识
虚函数:
一时间给我问懵了,不知道从何讲起,我回答了关于多态虚函数表的内容...
左值和右值:
引用和指针区别(参考牛客网):
1.指针有自己的一块空间,而引用只是一个别名,不是对象;
2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;
3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象的引用;
4.作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引 用的修改都会改变引用所指向的对象;
5.可以有const指针,但是没有const引用;
6.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能被改变;
7.指针可以有多级指针(**p),而引用至于一级;
8.指针和引用使用++运算符的意义不一样;
9.如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄露。
智能指针:
四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr (第一个已经被C++11弃用)
作用:管理一个指针。因为若动态开辟的内存空间忘记释放,会造成内存泄漏。由于智能指针是一个类,当超出了类的作用域,类会自动调用析构函数来释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。
shared_ptr:允许多个指针指向同一个对象。当进行拷贝或赋值操作时,每个shared_ptr会记录有多少其他的shared_ptr指向相同的对象,称为引用计数。一旦一个shared_ptr的计数器变为0,它就会通过析构函数自动释放所管理的对象。
unique_ptr:则“独占”所指向的对象。
计算机网络的知识
TCP/IP三次握手,为什么不能两次或者4次,断开链接为什么要4次
这个网上很多
规划题(重点考察思路)
从香港出发,香港广州杭州上海北京,再回到香港,飞机票价不一定,求小于1000块的所有乘机方式。
以上。
昨晚笔试题本来就已感觉自己凉凉了,没想到还有电话面试。就当作是增加经验了,确实还有很多不足,需要加强学习。