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

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

目录

    • 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.mzph.cn/news/198078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 戴尔 0PVG6D&#xff08;7th/8th Generation Intel Processor Family I/O - 9D4E 笔记本芯片组&#xff09; 处理器 英特尔 Core i5-8250U 1.60GHz 四核 已驱动内存8 GB ( 镁光 LPDDR3 1867MHz 4GB x 2 )已驱动硬盘西数 WD Blue SN570 1TB SSD (1 TB / 固…

行云海CMS SQL注入漏洞复现

0x01 产品简介 行云海cms是完全开源的一套CMS内容管理系统,简洁,易用,安全,稳定,免费。 0x02 漏洞概述 行云海cms中ThinkPHP在处理order by排序时可利用key构造SQL语句进行注入,LtController.class.php中发现传入了orderby未进行过滤导致sql注入。攻击者除了可以利用 SQL 注入…

数字艺术语言processing初步

文章目录 示例程序刷新逻辑二维对象 Processing是专门用于艺术设计的编程语言&#xff0c;可以实现非常炫酷的图形和功能&#xff0c;比如下面这张联合国用的图就是用Processing编写的&#xff0c;本文简要介绍以下Processing&#xff0c;并列出其二维对象。 示例程序 第一步&…

删除PPT文件的备注内容

解决方案的工作经常汇报以及经常做ppt的回报工作&#xff0c;但是删除备注很痛苦。 在网上或者拿历史的ppt文件修改后&#xff0c;需要删除ppt备注内容以及删除ppt个人文件信息的办法&#xff1a; 现象&#xff1a;很多备注信息&#xff0c;需要删除 解决办法一、 文件--信息-…

DNS 查询结果逐行解释

文章目录 FlagsADDITIONALANSWER SECTIONQuery timeSERVERWHENDNS PortAuthoritative answer权威DNS服务器Non-authoritative answer推荐阅读 DNS查询后&#xff0c;查询结果一般如下&#xff1a; mirrorUbuntu22:~$ dig www.baidu.com; <<>> DiG 9.18.12-0ubuntu0…

Linux Docker 图形化工具 Portainer远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 结束语 前言 Portainer是一个轻量级的容器管理工具&#xff0c;可以通过Web界面对Docker容器进行管理和监控。它提供了…

nodejs微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

ffmpeg编译支持AVS3编解码

libuavs3d ffmpeg的官方源码中已经支持了libuavs3d解码器的接口&#xff08;libavcodec/libuavs3d.c中定义&#xff09;&#xff0c;因此如果需要编译ffmpeg支持libuavs3d解码器&#xff0c;只需要安装libuavs3d.so以及开启ffmpeg的编译选项即可。 安装libuavs3d解码器 #代码仓…

小程序开发

1.准备工作 1.注册公众平台账号&#xff08;免费&#xff09;2.下载小程序开发工具&#xff08;免费&#xff09; 2.开发步骤 1.第一个小程序 1.小程序的AppID相当于小程序平台的一个身份证&#xff0c;这里使用的是测试号&#xff08;注意区别于服务号或订阅号的AppID&#xf…

Linux篇之基于Centos的everything镜像搭建yum镜像源

一、前言 常见问题&#xff1a; 在生产环境或者测试环境中&#xff0c;因为内外网隔离问题&#xff0c;导致无法连接外网 1&#xff09;如安装rpm包过程中&#xff0c;出现缺少各种各样依赖问题 2&#xff09;由于内外网的隔离&#xff0c;无法连接外网的yum源&#xff0c;现象…

学习前端都需要学什么?

前端开发是一门需要掌握多种技术和工具的综合性学科。作为一名合格的前端开发者&#xff0c;需要具备以下几方面的知识和技能&#xff1a; HTML&#xff1a;HTML 是构建网页的基础&#xff0c;是前端开发的第一步。需要掌握各种 HTML 标签的使用和语义化的编写方式&#xff0c…

Java---序列化

将java对象保存在文件中或者在网络中传输java对象&#xff0c;都需要用到序列化。 序列化&#xff1a; 将数据结构或对象转换成二进制字节流的过程 反序列化&#xff1a;将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程 serialVersionUID作用于版本控制。反…

本地快速部署Apache服务器并使用内网穿透实现远程访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…

【自习室预约系统源码】基于springboot框架的自习室管理和预约系统设计

&#x1f345; 简介&#xff1a;500精品计算机源码学习 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 文末获取源码 目录 一、以下学习内容欢迎领取&#xff1a; 二、文档资料截图&#xff1a; 三想了解更多&#xff0c;请收藏、评论、留言&#xff1a;…

GPTs每日推荐--生化危机【典藏版】

今天给大家推荐一个游戏性质的GPTs&#xff0c;叫做生化危机典藏版&#xff0c;国内点击可玩。 开篇&#xff1a;玩家从末日中醒来。 选择&#xff1a;玩家会遇到各种资源、任务、剧情&#xff0c;需要自行选择相关的分支剧情&#xff0c;一旦选错&#xff0c;无法重选。 结局…

openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告

文章目录 openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告 openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告 生成快照数据需参数enable_wdr_snapshoton&#xff0c;访问WDR快照数据需要sysadmin或monadmin权限&#…

Python取出文件名和文件后缀

os.path.basename os.path.basename 是 Python 的一个内置函数&#xff0c;它用于返回路径名中的文件或目录的基本名称。例如&#xff0c;如果你有一个文件路径 "/home/user/documents/myfile.txt"&#xff0c;os.path.basename 将返回 "myfile.txt"。其输…

【PID学习笔记 5 】控制系统的性能指标之一

写在前面 PID在实际工程中最重要的工作就是调参&#xff0c;那么首先就要了解控制系统的性能指标。上文最后简要介绍了控制系统的基本要求&#xff0c;本文开始将系统学习控制系统的性能指标&#xff0c;内容比较多&#xff0c;初步计划是分三节来讲解。本文重点介绍性能指标的…

VirtualBox+Vagrant安装虚拟机

文章目录 一、下载Virtualbox和Vagrant1、下载2、安装 二、安装虚拟机1、新建目录D:\VirtualMachine2、执行vagrant init centos/7命令&#xff0c;就会在该目录下创建Vagrantfile文件3、执行vagrant up命令4、查看当前主机分给虚拟机的网关网段5、找到D:\VirtualMachine下的Va…

leetcode算法之栈

目录 1.删除字符串中的所有相邻重复项2.比较含退格的字符串3.基本计算器II4.字符串解码5.验证栈序列 1.删除字符串中的所有相邻重复项 删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {string ret;//使用数组模拟栈操作for(auto …