南京大学计算机学院面试准备

2023-12-05 14:20

本文主要是介绍南京大学计算机学院面试准备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该内容是我面试南京大学计算机学院保研的时候的准备题目,最后是面试的时候问到的问题。

目录

    • 1. 自我介绍
    • 2. 进程和线程的区别
    • 3. 循环引用
    • 4. 操作系统怎么利用多核?
    • 5. 英文介绍二叉搜索树
    • 6. 英文介绍二叉搜索树的时间复杂度
    • 7. 介绍 stackover flow
    • 8. 什么是函数服务
    • 9. Java和C++的区别
    • 10. new和malloc的区别
    • 11. topK问题
    • 12. 判断图是否有环
    • 13. 动态分配的注意事项
    • 当我面试后具体问题到的问题

1. 自我介绍

​ Good afternoon, professors. It is my great honor to attend the interview myself here. I’m LiangYuanshao from Hunnan University, majoring in software engineering. Today I will introduce myself from three aspects: education background, Scientific research experience and my future plan.
​ First of all, I ranked 12th among 131 students and have received Scholarship twice . During my spare time, I devote myself to learning Web crawlers and data analysis, So I am good at them.
​ Next, in addition to professional knowledge learning, I also actively participated in various competitions, which not only exercised my hard skills such as programming and document writing, but also exercised my soft skills of cooperation with others and innovative thinking.
​ Finally, my future plan. I have made decision to apply for master degree and focus on my favorite field: Big Data. In addition, going further study in XiAnJiaoTong University has always been my dream. I sincerely hope that I can get this opportunity to make my dream come true here.
Thank you for your time and attention!

2. 进程和线程的区别

  1. 进程是资源分配最小单位,线程是程序执行的最小单位
  2. 进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段,线程没有独立的地址空间,它使用相同的地址空间共享数据
  3. CPU切换一个线程比切换进程花费小
  4. 创建一个线程比进程开销小
  5. 线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数据,进程之间的通信需要以通信的方式(PIC)进行;(但多线程程序处理好同步与互斥是个难点)
  6. 多进程程序更安全,生命力更强,一个进程死掉不会对另一个进程造成影响(源于有独立的地址空间),多线程程序更不易维护,一个线程死掉,整个进程就死掉了(因为共享地址空间)

3. 循环引用

循环引用指两个对象相互强引用了对方,从而导致两个对象都无法被释放,引发了内存泄漏现象,互相引用变量的引用计数都为1,本质上是引用计数的原因。

只靠强引用计数方式,会存在循环引用的问题,导致对象永远无法被释放,弱引用就是专门用来解决循环引用问题的:

「若 A 强引用了 B,那 B 引用 A 时就需使用弱引用,当判断是否为无用对象时仅考虑强引用计数是否为 0,不关心弱引用计数的数量」

这样就解决了循环引用导致对象无法释放的问题,但这会引发野指针问题:当 B 要通过弱指针访问 A 时,A 可能已经被销毁了,那指向 A 的这个弱指针就变成野指针了。在这种情况下,就表示 A 确实已经不存在了,需要进行重新创建等其他操作

4. 操作系统怎么利用多核?

现在CPU是多核的,不依赖PIC,而是依赖APIC。(Advanced Programmable Interrupt Controller)
每个核都有LAPIC,处理内部的定时芯片产生的定时中断,进行调度
https://www.bilibili.com/video/BV1VT4y1v7o9

5. 英文介绍二叉搜索树

Binary search tree It is either an empty tree or a binary tree with the following property: if its left subtree is not empty, the value of all nodes in the left subtree is less than the value of its root node; If its right subtree is not empty, the value of all nodes in the right subtree is greater than the value of its root node. Its left and right subtrees are also binary sort trees respectively

6. 英文介绍二叉搜索树的时间复杂度

closely related to the tree shape.

left and right subtrees of each node in the tree are roughly the same height, the tree height is logN. the average search time complexity is on the order of O(logN)

if the inserted keywords are in order, the BST degenerates into a single tree structure. the average search time complexity is on the order of O(n).

7. 介绍 stackover flow

Stack overflow is due to the fact that the C language family has no built-in checks to ensure that data copied to the buffer is not larger than the size of the buffer, so when the data is large enough, the buffer will overflow.

8. 什么是函数服务

开始是云计算里面三种计算模式,基础设施即服务(IaaS)平台即服务(PaaS)软件即服务(SaaS)。Faas是一种新的运算模式

云计算里面的是对函数服务的高度抽象,给它一个输入,就给返回给你一个输出。

9. Java和C++的区别

  1. Java源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。C++源码一次编译,直接在编译的过程中链接了,形成了机器码。
  2. C++比Java执行速度快,但是Java可以利用JVM跨平台。
  3. C++中有指针,Java中没有,但是有引用。
  4. C++支持多继承,Java中类都是单继承的。但是继承都有传递性,同时Java中的接口是多继承,类对接口的实现也是多实现。
  5. C++运算符可以重载,但是Java中不可以。
  6. 同时C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。
  7. C++中,开发需要自己去管理内存,但是Java中JVM有自己的GC机制,虽然有自己的GC机制,但是也会出现OOM和内存泄漏的问题。C++中有析构函数,Java中Object的finalize方法。
  8. Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。

10. new和malloc的区别

  1. new是C++里面的操作符,由编译器支持。malloc是函数,是由头文件支持

  2. new无需指定内存大小,编译器会根据类型信息自行计算,malloc需要指定

new之间返回生成对象的指针,是安全操作。malloc只是分配的内存,返回是void* ,需要强制转型,不安全

new可以重载

new失败就抛出异常,malloc失败就返回null

new可以检测内存泄漏到具体哪一行

11. topK问题

https://blog.csdn.net/zjwreal/article/details/90674978
快排的partition函数和最小堆

12. 判断图是否有环

dfs,拓扑排序,并查集

我们可以使用并查集来判断一个图中是否存在环:

对于无向图来说,在遍历边(u-v)时,如果结点 u 和结点 v 的“父亲”相同,那么结点 u 和结点 v 在同一个环中。

对于有向图来说,在遍历边(u->v)时,如果结点 u 的“父亲”是结点 v,那么结点 u 和结点 v 在同一个环中。

  1. 给你一个长度为 n 的数组,其中只有一个数字出现了奇数次,其他均出现偶数次,问如何使用优秀的时空复杂度快速找到这个数字
    进行遍历异或

  2. 给你一个长度为 n 的数组,其中只有一个数字出现了大于等于 n/2 次,问如何使用优秀的 时空复杂度快速找到这个数字

    public int find(int[] nums) {int count = 1;int result = nums[0];for (int i = 1; i < nums.length; i++) {count = result == nums[i] ? ++count : --count;if (count == 0) {result = nums[i + 1];}}return result;
    }

    13. 动态分配的注意事项

    https://blog.csdn.net/qq_36698189/article/details/114989965

当我面试后具体问题到的问题

  1. Krustra算法英文介绍
  2. Krustra算法的数据结构?几个优化过程?
  3. np和p问题了解吗?我说我不了解,常用是java语言。问我,java类加载机制是什么?
  4. 离散数学你最清楚什么内容?我说是最短路径,说一下Dijkstra算法和Bellman-fold算法的区别?为什么Bellman-fold算法能够解决负权?
  5. 并发和并行?
  6. Cpu的数据哪里来???Cache相关的问题,我没了解老师意思
  7. 最后问我我的特长和缺点

这篇关于南京大学计算机学院面试准备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/457923

相关文章

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

贝壳面试:什么是回表?什么是索引下推?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 1.谈谈你对MySQL 索引下推 的认识? 2.在MySQL中,索引下推 是如何实现的?请简述其工作原理。 3、说说什么是 回表,什么是 索引下推 ? 最近有小伙伴在面试 贝壳、soul,又遇到了相关的

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

毕业前第二次面试的感慨

距面试已经过去了有几天了,我现在想起来都有说多的恨感慨。 我一直都是想找刚刚起步的企业,因为这能让我学到更多的东西,然而正好有一家企业是刚起步的,而且他还有自己的产品专利,可以说这是一家,即是创业又是刚起步的公司,这家公司回复了我投给他的简历,这家企业想进一步了解我的情况,因为简历上我符合这家企业的基本要求,所以要进一步了解。 虽然面试的过程中,他给我的面试题,我做得并不是很理想,