简单的总结一下今天的行程吧

xiaoxiao2021-03-01  18

昨晚练题的时候一直卡到了早上5点多,虽有不甘,但还是上床去睡了,毕竟过劳死这东西在这一行也不算啥新鲜事了,9点多的时候迷迷糊糊的听到了电话声,第一次没接,之后再次响起的时候那边就给说了,请于今天下午1点半至科大讯飞XXX路参加软件研发实习岗位的笔试面试,这才想起前两天刚在网上投了份讯飞的实习简历,本来大不算过去了,导师那边早就在催过去了,一直还在学校等研究生现场报名,但是那边貌似说今天只有2个人面试研发实习岗位,考虑到影响不太好,就答应过去了,这一路上转车转的我头晕眼花,到了那里。

等到下午1点半开始笔试,一个小时,看了一下试卷,感觉还算正常,没有什么太刁专的问题,就冲冲的答完了。附上试题:这里不得不吐槽一下,我说讯飞好歹也是**省内挺大的一家科技公司啊,敢不敢专业一点,回来之后才发现这些题网上竟然有原题!

1. 已知二叉树的前序遍历为ABCDEFGHIJ,中序遍历为CBEDAHGIJF,请画出其二叉树结构。

注:基础题

2.求一个整数数组的最大元素,用递归方法实现。

#include <iostream> #include <cmath> using namespace std; int maxnum(int a[], int n) { if(n == 1) return a[0]; if(n>1) { return max(a[0], maxnum(a+1,n-1)); } } int main() { int num[10] = {0,1,2,3,4,5,6,7,8,9}; cout<<maxnum(num,10)<<endl; return 0; } 注:以上为网上给出答案,笔者的做法如下: 算法思路: int a[n]; int max(int n) { if(n==1) return a[0]; return a[n-1]>max(n-1)?a[n-1]:max(n-1); } 3.什么是虚拟存储器?虚拟存储器的特点是什么? 虚拟存储器:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。 特点:多次性、对换性、虚拟性。 多次性是指一个作业被分成多次调入内存运行,亦即在作业运行时没有必要将其全部装入,只需将当前要运行的那部分程序和数据装入内存即可;以后每当要运行到尚未调入的那部分程序时,再将它调入。 对换性是指允许在作业的运行过程中进行换进、换出,亦即,在进程运行期间,允许将那些暂不使用的程序和数据,从内存调至外村的对换区(换出),待以后需要时再将它们从外存调至内存(换进)。 虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。 注:笔者由于时间关系只回答了 逻辑上扩充内存 4.什么是this指针?其主要功能是什么? this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。全局仅有一个this指针,当一个对象被创建时,this指针就指向对象数据的首地址。 一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时使用this指针,如this->n = n (不能写成n = n)。 注:笔者当时只是回答了指向当前对象 5.C++程序运行时有哪些常见的错误?解决方法是什么? 注:笔者结合自己编程的一些经验简要回答了一下,比如内存泄露,栈溢出等等 6.在网络传输超大的文件(比如2G以上的文件),你的解决方案是什么? 注:笔者当时首先想到的就是文件分割并行传输,事后想想还是不太靠谱。。。 7.写出字符串类的必备构造函数和赋值运算符重载的实现方法。 注:大致写了一下(面试时面试官看到我的实现之后问我以前是不是做Java的,后来一想自己的代码好像是Java风格。。。)

8.已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。

void partition(int A[], int n) { int x; int i = 0; int j = n-1; while(i != j) { while( a[i]%2 == 1) i++; while (a[j]%2 == 0) j++; if(i < j) { x = a[i]; a[i] = a[j]; a[j] = x; } } } 注:笔者此题仅仅是给出了算法思路:不过大同小异: a1 a2 a3 ...... an-1 an i j while(i<j) { if(ai为奇,aj为偶) ++i,--j; if(ai为偶,aj为奇) swap(ai,aj),++i,--j; if(ai为奇,aj为奇) ++i; if(ai为偶,aj为偶) --j; }

之后又等了一会,估计应该是一个技术主管类的负责人开始叫我过去面试了。

首先是噼里啪啦一堆项目经验之类,其次又开始面算法了:

第一题是递归判断五子棋问题,在一个棋盘上,0代表空,1代表黑子,2代表白子,现给定一个坐标(ax,ay),代表当前下的黑子的位置,求递归判断黑子是否已经赢了(不考虑赢的趋势,也即仅仅判断当前状态)

然后就是问如何求1到1000000内所有素数,(相信弄过一点算法都清楚筛选法)

最后问了个如何在一个序列中求第k大的数,笔者当时脑袋一热回答了二叉搜索树+优先级(也OK),面试官听完后就来了句,不就是堆嘛。。。

实习面试经历大致就这样吧,累了,睡了。。

转载请注明原文地址: https://www.6miu.com/read-3850028.html

最新回复(0)