Interview Prepare


英文部分

自我介绍(1~2分钟)

自我介绍思维导图

Good morning everyone,

Thank you for giving me this opportunity. It’s my pleasure to introduce myself. My name is Wu Xinkang, born and raised in Taizhou, Zhejiang. Currently, I am pursuing my bachelor’s degree in Software Engineering at the Zhejiang University of Technology.

During college, I studied hard. My GPA was over 3.4, ranking in the top 30% of this major. I passed CET-6, participated in some competitions (such as e-commerce competition), and got school level scholarships for several times. I love and enjoy coding. I have done some small projects outside of class, mainly based on Java backend technologies. I learned how a complete project is developed and how team members work together in practice. I also built my own personal blog to record and share some knowledge with others.

I’m interested in distributed systems. I will try myself to be a qualified software engineer and I dream of being an architect in the future. The training system of Software College of Zhejiang University is very suitable for me.

Therefore, I desperately wish to be accepted. I‘m confident that I can match your requirements and maintain high standards when pursuing the master’s degree. Thank you!

为什么考浙大?

I was born in Zhejiang and have lived in Zhejiang since childhood. Zhejiang University is excellent and famous in China and the world. When I was in high school, I dreamed of being admitted to Zhejiang University. I remember going Zijingang Campus for the first time to participate in a chemistry competition. At that time, I was deeply impressed by the academic atmosphere of Zhejiang University. Although I didn’t get enough scores in the college entrance examination, I still wanted to stay in Zhejiang and fulfill my dream of Zhejiang University when pursuing my master’s degree.

为什么要读研,读研的计划?

In the undergraduate period, I have learned some basics of computer science and software engineering, and have gained some breadth of knowledge, but I still want to master the depth of knowledge in a certain field. So I can reach a higher starting point to serve the enterprise, society, and our country better.

During my postgraduate study, I will not only study postgraduate courses hard, but also learn more about the distributed systems which I am interested in, and participate in projects and competitions actively. Through deeper learning and practice, I hope to become a qualified software engineer.

介绍家乡

I am from Xianju, Taizhou, a beautiful and historic place located in the southeast of Zhejiang Province. It was named after the place where the gods lived. Almost 80% of Xianju is hilly. So Xianju has many beautiful landscapes, such as Shenxianju, which is a national 5A-level scenic. Agriculture and tourism are two of our most important industries.

介绍家庭

My father works in a bank and he knows some finance and bank management. And my mother is a math teacher in a rural elementary school. I am a single child in my family, and I have been interested in computers since I was a child, So I hope that I can contribute to the financial and educational fields of my parents through information technology in the future. They also support me a lot and respect my interests.

介绍本科

介绍学校

Zhejiang University of Technology is located in Hangzhou, Zhejiang, formerly known as Zhejiang Institute of Chemical Technology. So it has advantages in chemical industry. His computer science and software engineering subject assessments are both B, which is not bad. Our school has a lot of cooperation with Zhejiang University, and many of the teachers here graduated from Zhejiang University. So I think our school has a good relationship with Zhejiang University.

介绍专业

My major is software engineering. We have not only studied basic courses in computer science, but also learned a lot about software engineering. This makes our knowledge not only limited to computers or programming languages, but also involves projects, architecture and management, and even team collaboration.

介绍学过的课程,学的最好的计算机课程是什么?

We have learned some basic computer courses, including computer networks, operating systems, data structures, databases, and some programming languages, such as C ++, Java, and Python. And we also learned some courses about software engineering, such as software project management, requirements engineering, and outsourcing.

I think the best course I have learned may be data structure.

兴趣爱好

I used to like playing computer games in the past, but since entering college, I think programming is much more fun than computer games. So I often enjoy coding and do some projects. When the project is deployed on the server and goes online to work normally, I will have a strong sense of accomplishment. I like reading some books about technology and learn some latest and popular technologies. I also like to play badminton with my friends. Sometimes I also like singing, I used to be one of the top ten singers in our college.

PPT 讲稿

开场

Good afternoon, dear professors:

Thanks for giving me this opportunity. It’s my pleasure to make a self-statement. 请翻页。

目录

I will divide my self-statement into four parts: basic information, professional ability, project experience, and research interest. 请翻页。

基本信息

My name is Wu Xinkang, born and raised in Taizhou, Zhejiang. Currently, I am pursuing my bachelor’s degree in Software Engineering at the Zhejiang University of Technology. During college, my GPA was over 3.4, ranking in the top 30% of this major. I passed CET-6, got school level scholarships for several times and participated in some competitions from which I learned team collaboration in project development. I also did some student work to make some contributions to our class, our college, and our university. 请翻页。

专业能力

接下来是第二部分,专业能力。

Slide 1

在专业课方面,我专业课的平均绩点相对其他课程较高,这里列举了一些分数相对较高的一些专业课。

在专业技能方面,我在大学期间做的比较多的是后端开发,因此在课外主要学习的是一些 Java 后端开发相关的技术栈,包括 Java 编程语言,一些用于后端开发的框架(包括 Spring 和国内阿里的 RPC 框架 Dubbo等等)。在开发项目的过程中,我能使用 Git 进行版本控制和团队协作,也了解一些基本的 Linux 命令,能在云服务器部署一些项目,也了解现在比较流行的微服务架构体系,做过这方面的项目,还有就是一些前端技术。

在项目经历方面,这里列举了两个最近做的项目,会在第三部分项目经历中具体介绍。

在编程能力方面,虽然没有参加 PAT 考试,但是我刷过两遍 PAT 甲级题库,自测水平大概在 80 分左右。平时我也经常写代码,会提交在自己的个人 GitHub 仓库中。请翻页。

Slide 2

这里简单展示一下我学习过程中的一些记录。第一张图是我在 GitHub 上的代码提交记录,除了去年考研那段时间,我几乎每天都会坚持写代码。第二张图是我的个人博客,我习惯在学习或者开发过程中写一些笔记和总结,一方面为了巩固知识,锻炼写作和表达能力,另一方面也可以和别人分享。还有就是 PAT 的刷题记录和以前在慕课上近 1000 个小时的学习记录。请翻页。

项目经历

接下来是第三部分,项目经历。

Slide 1

这个跨境商品借卖平台,是我在参加电商竞赛的时候所做的项目。DropShipping 是一种供应链管理方法。这个项目主要是以业务为主,我负责的是后端的开发和部署,基于 SpringBoot 框架开发 Restful API,为前端提供接口,前端是一个微信小程序。然后具体的业务就不详细介绍了。请翻页。

Slide 2

这个基于微服务架构的影院购票系统,是我在做的毕业设计。微服务主要的思想就是将功能分散到各个离散的服务中,使得系统具有更好的弹性和扩展性。其中分为服务消费者和服务提供者,服务消费者是指这里中间的服务网关,服务提供者就是指下面的各个功能模块,服务提供者向注册中心注册自己的服务,服务消费者就可以从注册中心发现服务列表,并向服务提供者发起基于 Dubbo 的远程过程调用。用户的请求是经过 Nginx 反向代理到服务网关中,再通过服务网关来调用服务的。在服务网关中,可以做很多事情,包括对服务的聚合,对用户权限的控制,还有像负载均衡,连接和并发控制,以及服务熔断降级等等。在左侧的监控中心中,我用 Dubbo-Monitor 对服务的状态进行监控,并在 Dubbo-Admin 中进行展示和服务治理等。使用 Brave 进行链路监控,并交给 Zipkin 展示。这就是这个系统实现的一个整体的思路。请翻页。

研究兴趣

最后就是我研究生阶段的研究兴趣。我主要对分布式系统和大数据技术比较感兴趣。关于分布式系统,我只是实现过简单的基于微服务架构的分布式系统,也不是很完善,所以想进一步研究分布式系统的理论和实践。关于大数据技术,也只是刚刚入门而已,了解一些 Map Reduce 的思想,想进一步研究大数据的原理和应用。请翻页。

结尾

这就是我自我陈述的全部内容,感谢老师们的聆听!

中文部分

数据结构

关键路径的求解过程?

算法

怎么找中位数以及复杂度?

怎么在尽可能短的时间里找出数组里是否有两个数的和相加为k?

求行列式最好的算法时间复杂度,怎么实现?

计算机网络

TCP 和 UDP 的区别

  • 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。
  • 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。

三次握手

TCP三次握手

假设 A 为客户端,B 为服务器端。

  • 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
  • A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
  • A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
  • B 收到 A 的确认后,连接建立。

三次握手的原因

第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。

客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

四次挥手

TCP四次挥手

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。

  • A 发送连接释放报文,FIN=1。
  • B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。
  • 当 B 不再需要连接时,发送连接释放报文,FIN=1。
  • A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。
  • B 收到 A 的确认后释放连接。

四次挥手的原因

客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。

操作系统

进程管理

进程是什么,为什么要有进程?

进程就是执行中的程序实例。早期的计算机系统只允许一次执行一个程序,现代计算机系统允许将多个程序调入内存并发执行,这就要求对各种程序提供更严格的控制和更好的划分。这些需求产生了进程的概念。

线程和进程的区别?

Ⅰ 拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。

Ⅱ 调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。

Ⅲ 系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

Ⅳ 通信方面

线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。

死锁

产生死锁的必要条件

  • 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。
  • 占有和等待:已经得到了某个资源的进程可以再请求新的资源。
  • 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。
  • 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。

内存管理

虚拟内存?

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。

虚拟内存

为什么设置页表?页表中存放的是什么?

页表在分页内存管理中,用于将逻辑地址转化为物理地址。

页表(Page table)是存储着页(程序地址空间)和页框(物理内存空间)的映射表。页表包含每页所在物理内存的基地址。

页表

虚地址和实地址有什么区别?在程序中计算机用的是虚地址还是实地址?

物理内存和虚拟内存之间的主要区别在于,物理内存是指与系统的主板相连的实际RAM,但是虚拟内存是一种内存管理技术,可让用户执行比实际物理内存更大的程序。

虚拟地址或逻辑地址是CPU在执行过程中生成的地址,而物理地址是指存储单元中的地址。

程序中使用的是虚拟地址或逻辑地址。

Cache是啥,分别解释三种映射方式?

Cache块大小对命中率的影响?

操作系统中断过程

键盘输入是怎么实现的?(IO中断)除了中断,CPU还有什么控制IO的方式?

操作系统中的抖动是什么?

数据库

哈希索引和B+树索引有啥区别?

外键的作用?

什么是事务,事务的四大特点?

数据库中视图有啥作用?

毕业设计

毕业设计项目的原理和具体实现

编程语言

static的作用?

C++中的继承和多态?

Java、C++、C之间的区别?

Java为什么要使用引用不使用指针?

struct和class的区别?

项目

这个项目中你具体做了什么、用了什么技术、为什么用这些技术、有什么改进方式吗、项目中遇到的最大问题是什么等等。

其他

希望从事什么方面的研究?

人生规划


文章作者: 吴鑫康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 吴鑫康 !
评论
 上一篇
Hadoop 基础篇 Hadoop 基础篇
概要 大数据技术的相关概念 Hadoop 的架构和运行机制 实战:Hadoop 的安装和配置 实战:Hadoop 的开发 目标 掌握大数据存储与处理技术的原理(理论知识) 掌握 Hadoop 的使用和开发能力(实践能力) 结合书本,如《H
2020-05-06
下一篇 
Dubbo微服务影院系列(12):系统部署 Dubbo微服务影院系列(12):系统部署
运行环境 CentOS 6 云服务器 创建用户创建一个 cinema 用户: [root@huawei ~]# useradd cinema [root@huawei ~]# passwd cinema Changing password
2020-05-03
  目录