实习生面试问题及回答记录

文章目录

  • 文章简介
  • 技术类
    • 1、DFS和BFS算法的区别是什么?
    • 2、解释一下什么是快速排序?
    • 3、 如果让你写一个排序算法?你会怎么写?(大概说出代码的思路)
    • 4、解释一下二分查找的具体逻辑?
    • 5、在代码的数据计算量较大(一个亿以上)的情况下,让你来优化代码性能,你会怎么优化?前提是不能用任何组件和第三库。
    • 6、解释一下.net framework 、.net core、asp.net 这些框架之间的区别?
    • 7、 你觉得 .net core 和 .net framework 哪个性能更高?
  • 非技术类
    • 1、来段自我介绍和个人经历
    • 2、目前自己都学习掌握了哪些技术?
    • 3、会不会写xx技术?熟练程度怎么样?
    • 4、什么时候可以到岗工作?

文章简介

总结记录一下最近面试实习生被HR问到的问题。回答仅供参考,主要记录面试中被问到的问题。

技术类

1、DFS和BFS算法的区别是什么?

DFS 全称 Depth-First search,译为深度优先搜索,而 BFS 全称 Breadth-First Search 译为广度优先搜索

深度优先搜索 它从初始节点出发,按预定的顺序扩展到下一个节点,然后从下一节点出发继续扩展新的节点,不断递归执行这个过程,直到某个节点不能再扩展下一个节点为止。此时,则返回上一个节点重新寻找一个新的扩展节点。如此搜索下去,直到找到目标节点,或者搜索完所有节点为止。

广度优先搜索 是指,立足于当前的某一个节点,每一次将遍历所有离该节点最近的节点(也就是距离为1的节点),然后再将这些刚刚被当作最近节点遍历的节点全部依次作为当前节点进行下一次对所有最近节点的遍历,依次类推,直到找到想要的节点和路径。

2、解释一下什么是快速排序?

快速排序算法是通过多次比较和交换来实现排序,其排序流程如下:
(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。
(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。
(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。
(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

3、 如果让你写一个排序算法?你会怎么写?(大概说出代码的思路)

还是以快排为例子。以下是快速排序的代码逻辑描述:
选择一个基准元素(pivot),通常选择第一个或最后一个元素。将序列分为两个子序列,一个子序列包含所有小于基准元素的值,另一个子序列包含所有大于基准元素的值。否则,我们选择第一个元素作为基准元素,并将所有小于基准元素的值放入一个左子数组中,将所有大于基准元素的值放入一个右子数组中。然后,我们递归地对左子数组和右子数组进行快速排序,并将它们与基准元素合并为一个有序数组。

4、解释一下二分查找的具体逻辑?

二分查找(Binary Search)算法是一种针对有序且不含重复数据集合的查找算法,时间复杂度为O(logn)。它的具体逻辑是:每次通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。如果中间值大于查找值,则往数组的左边继续查找,如果小于查找值这往右边继续查找。这个过程类似于折半查找,因此也称为折半查找算法。

5、在代码的数据计算量较大(一个亿以上)的情况下,让你来优化代码性能,你会怎么优化?前提是不能用任何组件和第三库。

以下是一些优化代码性能的常见方法:

1、减少循环次数:在计算量较大的情况下,循环次数是影响性能的主要因素之一。因此,可以通过减少循环次数来提高代码性能。例如,可以使用数组或哈希表等数据结构来避免重复计算。
2、使用更高效的算法:有时候,优化代码性能的最简单方法就是使用更高效的算法。例如,如果需要在数组中查找一个元素,使用二分查找算法会比线性查找算法更快。
3、减少内存分配:在计算量较大的情况下,内存分配也会对性能产生影响。因此,可以通过减少内存分配来提高代码性能。例如,可以使用对象池来避免频繁地创建和销毁对象。
4、并行化处理:如果代码可以并行化处理,那么可以使用多线程或分布式计算来提高性能。例如,可以将计算任务划分为多个子任务,然后并行处理这些子任务。
5、优化数据结构:选择合适的数据结构可以显著提高代码性能。例如,如果需要频繁地插入和删除元素,使用链表比使用数组更高效。
总之,优化代码性能需要考虑多个方面,包括算法、数据结构、内存分配、并行化处理等。需要根据具体情况进行优化,以提高代码的性能。

6、解释一下.net framework 、.net core、asp.net 这些框架之间的区别?

.NET Framework、.NET Core和ASP.NET是三个不同的框架,它们之间有一些区别。总体来说,.NET Framework仅支持Windows操作系统,而.NET Core是跨平台的,可运行于Windows、Mac OS X和Linux等操作系统上。ASP.NET是用于构建Web应用程序的框架,在.NET Framework和.NET Core中都有相应的实现。

1、.NET Framework:是Microsoft最初发布的.NET框架,它仅支持Windows操作系统。.NET Framework提供了很多类库和工具,用于开发Windows桌面应用程序、Web应用程序等。ASP.NET是.NETFramework的一部分,可用于构建基于Web的应用程序。
2、.NET Core:是一个新的跨平台.NET框架,它提供了构建现代化、可伸缩和高性能的跨平台软件应用程序的通用开发框架。.NETCore是开源的,并支持多种操作系统,包括Windows、Mac OS X和Linux等。ASP.NET Core是.NETCore的一部分,是用于构建Web应用程序的跨平台框架。
3、ASP.NET:有两种不同的实现,一种是基于.NET Framework的ASP.NET,另一种是基于.NET Core的ASP.NET Core。两者都是用于构建Web应用程序的框架,但ASP.NET Core具有跨平台能力和其他一些新的特性,如支持Docker容器化等。

总结来说,.NET Framework、.NET Core和ASP.NET这些框架都是为了方便开发者构建各种类型的应用程序而提供的,但它们之间有一些技术和功能上的区别。

7、 你觉得 .net core 和 .net framework 哪个性能更高?

总体来说,.NET Core比.NET Framework具有更高的性能和可扩展性。以下是一些具体的比较:
1、 .NET Core支持跨平台,而.NET Framework仅支持Windows系统。
2、 .NET Core和 .NET Framework都是基于.NET Standard Library实现的,但.NET Core具有更高的性能和可扩展性。
3、.NETCore中的Span对象可以帮助处理高性能编程场景,而.NET Framework不支持该对象。
4、使用.NET Core可以实现容器化、微服务等解决方案,这些方案在.NET Framework中较为困难。
综上所述,.NET Core在性能和可扩展性方面优于.NET Framework,尤其是在处理高性能编程场景时表现更为突出。

非技术类

根据自己的情况回答就行了。

1、来段自我介绍和个人经历

2、目前自己都学习掌握了哪些技术?

3、会不会写xx技术?熟练程度怎么样?

4、什么时候可以到岗工作?


回答的内容整理于网络,版权属于原作者。

你可能感兴趣的:(Python自学记录,全栈开发自学记录,面试,排序算法,算法)