首页 > 编程知识 正文

go语言实习面试,大学生暑假实习总结

时间:2023-05-06 08:55:33 阅读:178731 作者:4661

目录一面HR两面技术最终面总结 前景 学习Go语言也有大半年了。 我想在大学二年级的暑假找实习 我面试了学校附近的公司,记录了我的第一次面试过程 一边向HR自我介绍。 我是xxx。 我来自xxxxx

是x的大二学生,负责xxxx班,协助集中的摩托车和内向的池塘

,这一阶段主要完成对客户的认证。
2)经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
SSL协议提供的安全通道有以下三个特性:
机密性:SSL协议使用密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的。
完整性:SSL协议会对传送的数据进行完整性检查。

如果我两个进程要对一个数据进行读写,如何避免竞争,防止数据的读出的不正确

那就是在进程中加锁,看需求,如果写比读多就加互斥锁锁,如果读比写多就加读写互斥锁,最后再defer这个锁。

go里面的同步和异步中,go进程是如何完成等待的和执行的。

go进程的等待是阻塞的,也就是说当我go一个进程之后,用sync.WaitGroup进行进程的管理,进程增加就是Add(),进程在执行就用Wait()对其进行阻塞等待。然后再用Done()完成。这样能对进程之间进行安全的管理。

uint能相减吗
这个当时答了可以,后来面试官提示了一下,就犹豫了,就说不知道了。

我不知道了,在计算机组成原理上面学的,计算机底层只有加法器。嗯嗯嗯,应该可以吧…
下面正解
uint的范围是在2^31 - 1,即:0~4294967295,所以如果是发生越界的话,只能是这个数4294967295。所以是看情况是否能相减,如果相见的数字是在范围内的就可以了,如果超出范围是不行的。

附上例子

#include <iostream>#include <stdio.h>using namespace std;int main(){ int a = 20; unsigned int n = 3; unsigned int b = 6; cout<<a-b<<endl; //14 cout<<b-n<<endl; //3 cout<<n-b<<endl; //4294967293 cout<<4+n-b<<endl;//1 return 0;} 刚刚你提到了计算机组成原理,讲讲你计算机组成原理的学到了什么

这门课大一学的,已经一年了,学到了一些计算机底层的东西,比如底层是只有加法器,其他运算都是通过加法器改来的,还有一些数值的范围,补码移码运算,还有一个cache的概念,和一些MOV,LAD,ADD等一些指令等等。

讲讲go的数组和切片的区别

go切片的底层其实就是数组,数组是不可边的,切片是可变的。

如果我要删除数组切片中特定的值具体如何做

我的话就用append进行删除,把这一个值的下标的前一个和后一个继续append拼接,就把中间的与这个删掉了。

如何对map键值对中的数据按照key进行排序

如果我不清楚go的map有没有特定函数进行排序的话,我会用两个切片对这个map的key进行存储,然后进行排序,在让map中的value按照切片中map进行输出。

讲讲go的反射

go的反射,我只在书上看到过,但是项目中,我并没有用过反射。我只是知道反射是能反射出输入数据的数据类型。
下面是整理
反射就是能检查程序在运行时的状态
reflect.ValueOf(h),得到实际的值,并且可以改变其字段值;
reflect.TypeOf(h),得到类型的元数据,通过t我们能获取类型定义里面的所有元素;
如果需修改value,该struct类型的字段必须是大写,小写相当于private,是不能通过反射修改的,会报异常.

你能讲一下你是如何定义接口返回类型的

我的话是专门写一个序列化的一个函数,每个返回都进行一次序列化操作,就是一个接口定义专门的序列化函数,进行数据的返回。

如果我有200个接口,你是如何解决这个问题,保证高效开发呢

错误码统一放置。一个项目,三分靠开发,七分靠维护。不过如果是200个的话,我觉得应该是有很多接口是可以重复利用序列化的函数的,这个我觉得可能就要看数据库的架构是怎么样的了,200个接口,如果是数据的架构问题,那我是改不了了,但如果不是数据库的架构问题,那我觉得应该是有很多重复的,可能错误码就占到一般,所以就错误码统一放置。

你对Linux系统了解不深的话,就不问你Linux了,为什么会选择go呢

go有着python的简洁,也能通过指针操作内存,所以有类似C++的性能(担任肯定是比不上C++的),也不想java那么难部署,背后有Google公司。而且现在云计算,分布式大火,这些也是go的主场,所以我选择了go。

你有什么想问我的吗

你们公司有那些业务用到go吗?

面试官的回答

我们公司是用java的架构,现在是有一个很大的主节点,但是要有一些小的节点操作,如果用java的话就比较难部署,所以这部分小节点的业务我们就打算用易于部署的go进行,go的部署很容易。

大概是这些问题,有些我记不太清楚了。最后面试官说等三个工作日。

2021年5月31日更新

终面 自我介绍

和上面一样

我不是技术出身的,我是想说你来实习工作是和在学校不一样的,这里工作节奏很快,工作压力也可能很大,你是第一次实习,你能给我一个理由说说你为什么能胜任这个岗位吗?

因为我是班级团支书,也担任学院学生会部门的副部,平时学业以外还有其他的学生工作,我觉得之前能平衡好学习和学生工作,这个也可以的。

那你是怎么平衡你的学习和学生工作呢?

这个学期还好,上个学期就有点失衡,所以上学期的绩点就有点低,那我是水课的话就用来做作业或是做学生工作,专业课认真听讲,当天作业就当天完成,绝对不能拖。必须提高效率,大概就是这样。

那你做学生工作,你有什么改变吗?

我最大的变化我觉得是,服从上级吧,以前我是有什么自己的想法就提,但是总是被反驳回来,后来我觉得就算了,上级这样安排,也有上级的道理,我觉得在公司也是一样的道理,上级安排了什么任务,什么事情,也是有一定的道理的。

那你觉得现在的你,回去了还会提意见吗?

我觉得我应该还会的,我还年轻,正值热血青年,可能态度就不想当初那么坚硬了,我提出我的想法,上级或是他人接不接收就看他们自己了。

那我问一个问题,如果你的leader给你一个任务,你是想要leader把任务列出来,step by step,一步步让你这样做,还是想你自己去做?

首先,如果是一开始进入公司,我和leader的想法还没融合的话,我觉得我应该会想让leader 把任务列出来,step by step,因为我不知道leader是否是我所想的那样的,等后面和leader磨合了之后,我可能就已经知道leader想要什么效果,就不需要leader把任务列出来了。我的想法就是这样。

具体还有一些无关紧要的就没打出来。也不是技术层面的,基本都是合作层面。

总结 我是班级的团支书,我以为会有一个问题是关于团支书的,没想到全是技术的问题,并没有涉及到这一职务,反而问了比较偏于技术的学院部门的事情。linux系统要认真学一些深入的东西了,只知道一些基础的操作。也是面试官建议的。关于算法部分,并没有问二叉树、排序、动态规划等的一些算法(还好没有当场写代码),打算继续刷力扣题了。计算机网络,计算机组成原理,计算机操作系统倒是涉及到了部分,但是由于细节部分不太了解,所以就比较笼统。数据库方面也只是问了锁的问题,没有进一步mysql、redis等进行询问。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。