计算机专业毕业面试中面试官经常问什么问题?

1.从哈希表,二叉树,链表中获取元素需要多长时间?如果你有几百万条记录呢?

哈希表需要O(1)时间,二叉树需要O(logN) (N是树的节点数),链表需要o (n是链表的节点数)。如果数据结构工作正常(比如哈希表无冲突或冲突相对较少,二叉树平衡),几百万条记录不会影响效率。如果工作不正常,效率会随着记录数量的增加而降低。

2.重写和重载的区别是什么??

重写在运行时确定,重载在编译时确定。覆盖和重载的机制是不同的。例如,在Java中,重载方法的签名必须不同于原始方法的签名,但为了覆盖,它必须是相同的。

3.fork进程和生成线程有什么区别?

当您派生一个进程时,新进程将执行与父进程相同的代码,但是在不同的内存空间中。但是当你在一个已有的进程中生成一个线程,它会生成一个新的代码执行路径,但是* * *享有同样的内存空间。

4.什么是临界区??

临界段是一段代码,非常重要,在多线程中只能由一个线程同时执行。您可以使用信号量或互斥体来保护关键部分。在Java中,可以使用synchronized关键字或ReentrantLock来保护临界区。

5.值类型和引用类型有什么区别??

值类型更优化,永远不可变,比如Java原来的int,long,double,float。引用类型指向一个对象,这个对象可以是可变的,也可以是不可变的。你也可以说值类型指向一个值,引用类型指向一个对象。

6.什么是进程中的堆和栈?

在同一个过程中,有两个不同的内存区域。在Java中,堆栈用于存储原始值和指向对象的引用类型,但对象本身总是在堆栈中创建的。堆和栈的一个重要区别是堆内存由所有线程共享,但是每个线程都有自己的栈。

7.什么是版本控制?

版本控制是用于存储代码和管理代码库版本的软件,如SVN、CVS、Git、Perforce和ClearCase。他们在比较代码、审查代码和从以前的稳定版本构建代码方面非常高效。所有专业开发人员都使用一些版本控制工具,否则你无法有效地管理代码,尤其是如果有20个开发人员在同一个代码库上工作。版本控制工具在保持代码库的一致性和处理代码冲突方面起着非常重要的作用。

8.什么是强类型编程语言?

在强类型语言中,编译器确保类型的正确性,例如,你不能在字符串类型中存储数字,反之亦然。Java是强类型语言,所以有各种数据类型(比如int、float、String、char、boolean等。).您只能在相应的类型中存储兼容的值。

相比之下,弱类型语言在编译时不需要类型检查,它们根据上下文处理值。Python和Perl是弱类型编程语言的两个常见例子。您可以将一串数字保存为数字类型。