这是我参与更文挑战的第3天,活动详情查看:更文挑战
以下对话形式记录我的第一次面试经历,答案仅供参考。
调试设备
M:你好
M:我对IOS、Windows客户端这块没怎么接触
H:嗯,没事,我们这边还有C++开发的,你开始一下自我介绍吧。
项目经历,我做过一个基于Spring的商城,然后我负责后端这一块,实现了CRUD,然后还做过一个安卓APP项目。学过计算机网络、计算机操作系统,然后学过C,C++,java,然后自学了一点Python爬虫。嗯。
嗯,以上就是我的自我介绍,完毕。
H:问题一:你做的那个Sprig项目是什么,用到了Spring是吧,
M:嗯,那是我去年做的一个大作业,我利用Spring做的,我主要负责的是后端这一块,实现了后台的CRUD----,然后在本地运行了,当时是我们java的大项目嘛,就当作作业也交上去了。
H:问题二:嗯,你做的安卓客户端是怎样?是自己主动做的独立的项目吗
M:哦,那是我们大二为了参加比赛做的,就是那个是全国大学生服务外包大赛正好有一个内部是移动开发,我们又对移动开发有点兴趣,然后我就负责开发,另一个同学负责UI,我们就做了这个项目,哦,但是我们那个项目我们还调用了讯飞的一个借口,可以在做到语音跳转,因为这个项目是服务老人的。
H:你做的这个任务管理系统是怎么样的?
M:是Qt做的那个吗?那个当时是我的C++大作业,我当时是参考那个tick tick、滴答清单做的,需要做一个界面,然后我就用了Qt做,因为我不想用MFC做,这个系统我实现了基本的CRUD功能,对了,我还在做的时候用了晚上开源的二维码的代码,然后就是这边有一个界面,可以显示任务的二维码,你可以用手机扫码,就显示了任务的文本。
H:嗯嗯,你学过计算机网络是吧?
M:嗯嗯
H:那你讲一下TCP和UDP的区别吧
M:好,TCP是面向连接的可靠的传输字节流的传输方式
UDP是尽最大可能传输,不可靠,无连接的传输报文的传输方式
那个,TCP是,是面向连接的,UDP是不需要连接,直接就把整个数据尽快的发送出去,所以UDP也比TCP要快,因为两者组织数据的格式也不一样,TCP是要组织数据流为最,最优的格式传送出去,而UDP直接就传输出去了,嗯嗯,就是这样。
H:嗯,那你讲一下TCP如何确保正确传输的
M:就是那个三次握手四次挥手嘛,我再讲一下三次挥手和四次握手吧,嗯,比如说这里两个,一个客户端一个服务器,两个都是关闭状态的,然后服务器端被动打开,首先,一般是客户端传送一个同步序列码=1过去,然后进入同步状态,服务器端收到之后,返回一个确认码ACK=1和一个同步码回去,这个时候服务器端进入同步状态,然后客户端在返回一个确认码和同步码过去,最后建立了一个稳定的传输状态。
然后在这稳定的传输状态中,TCP还会通过 重传来保证数据的正确
然后是四次挥手。
两个端,比如谁想传完数据,就发送一个FIN码过去,表示自己已经没有数据可以传输了,当时可以接收数据,这个时候发送的这一段就进入了FIN_WAIT_1状态,然后另外一段收到了之后就返回一个ACK码=1,表示自己已经知道你结束了另一边收到这个时候进入FIN_WAIT_2状态,,然后等自己没有数据传输的时候,这一边就返回一个FIN码=1然后,另外一边收到之后就结束了连接,然后等待2MSL就是那个最长报文等待时间,然后连接就结束了。
H:那你有用过套接字socket做过实验吗?
H:好,那你讲一下socket的close()和shutdown()的区别
M:嗯,区别,嗯,我想一下(我不知道),我想一下哈,两个客户端一边建立之后,两者建立连接之后,一边调用close(),就发送了关闭传输的请求,然后那个shutdown是关闭连接,直接断开。
H:嗯嗯,你知道HTTP吗
M:嗯,我知道,超文本传输协议
H:那你讲一下get()和post()的区别
M:嗯,我觉得两者最大的区别就在于,最明显的区别,就在于前者在传输数据的时候可以直接在网址中看到要传输的数据,而post是看不到的,不是显性的,加密了的。
H:那get传过去的就不能加密了吗?
M:我说,应该也是能加密的,但是你可以直接在网址中读到,是看得见的。
H:嗯,还有什么其他区别吗?
M: 嗯,我想一下,。。。。。等待,嗯,嗯不好意思,这一块我暂时想不到了,只记得这些
H:嗯嗯
M:哦,get是通过网址传输的,它传输的数据是有上限的,而POST传输的是没有大小上限的。
H:嗯嗯,我看你你学过操作系统是吧?
M:嗯,学过
H:嗯,那你讲一下操作系统中内存里面缺页中断是什么?
M:嗯嗯(不记得了,我就按照系统颠簸来说吧),缺页中断就是,在内存是按照分页分区方式组织的系统里,你那个内存是一页一页的,当你访问过一个页面之后,你又要访问这个页面,这个时候就会那个,产生缺页中断,你数据出去又进来。
H:讲一下大端XX和小端XX
M:嗯,嗯,我好像没有学过这个,这个好像不是操作系统的内容吧?
H:嗯,你有了解过吗?
M:我没有了解过,但我感觉,听名字上来,应该是想操作系统里,字节大小的吧,想了个多少位,多少位。
H:嗯嗯,C语言中结构体,有时候会产生大小的不一致,他那个字节是如何处理的呢?
M:(第一想到的是结构体的字节对齐)嗯,就是结构体中,他在内存中是那样存储的吗,然后你里面又是一段一段的,他那个数据类型肯恶搞不一致,这个时候就会产生字节对齐了
H:嗯,那系统是如何进行字节对齐的呢?
M:(不知道)嗯,
H:比如说我就一个int类型,一个char类型
M:嗯,是比如一个char类型也是一个字节的,int类型是3个直接的
H: 4 个字节
M:嗯,4个字节,在一些系统是8个字节,额,他就是就是在一块存储空间中,int占了4个直接,而cahr是一个,那剩下的3个字节就用空值来占着,嗯嗯。
H:嗯,那你可以不要这个对齐吗?
M: emmm,我觉得是可以的,因为C语言是一个自由度自定义度很高的语言,虽然我没了解过,比如可以,把char类型声明为char数组,或者把在系统中设置结构体不对齐。
H:嗯嗯,你讲一下XXXX中,静态连接和动态连接的区别。
M:(不知道)emm,前者在编译中直接完成的,然后后者动态链接实在运行时确定的,依靠运行时的状态来确定的。
H:嗯,那你用动态链接的时候需要导入库吗?
M:嗯,应该需要导入库,我对这一块不是很了解。
H:代码段和字节流有什么区别?
M:嗯,这个我没有了解过呢。
H:嗯。C++中的extern c有什么用?
M:嗯,我不记得了,我对C++这块不是了解得很深,可能是导入C语言的吧(前面提到C++开发的,估计这里就彻底崩了,基础知识就不会了)
。。。
H:你平时有关注什么开源项目吗?
H:好,那今天就到这里吧,谢谢你花了这一段时间来面试
M:(???结束了,不用反问?我凉了)我就嗯嗯,没有没有,谢谢(小声),然后就结束了
嗯
然后对方关闭了视频,推出去,然后我电脑刚刚复制网址的时候,打开了一个网站,恰时的发出了一首华晨宇的《你要相信今天不是最后一天》,很符合当时的感觉,我还以为对面直接拒绝我,就会放的歌曲,哈哈哈🤣😂😢
以上OVER
看了一下时间,正好30min左右,估计是当初预定就30min,下午15:50开始,16:20结束,当初邮件预定30min,估计是到时间就再见了。
——————————————————————————————
反思:
- 面试官在问我项目的时候,我都一直在讲项目有社么功能,我还庆幸没有问我项目细节,我应该着力介绍自己在项目中使用的技术点,和项目完成了什么,来展现自己。
- 知识点薄弱,一些基础题没有答出来十分影响,比如get、C++的知识基础,并且主动要求不问C++
- 还有就是说话的时候,应该更加有底气一些,显得很la