学Go语言也有大半年了,就想着大二暑期找个实习 面试了一个学校附近的小公司,记录一下个人第一次面试过程前端
我是xxx,来自xxxxxx的一名大二学子,担任班级xxxx,协助班长和辅导员xxxxxxx,同时担任学院xxxx部门,完成xxxx任务。 以上就是个人自我介绍。vue
最深入的是一个gin+vue的商场项目,go是去年9月学的,这个项目我从12月底写了2月头,写了两个月,从后端到前端,学习到了不少关于gin框架、gorm、vue等的一些知识。也累计到了不少经验,好比说支付功能,以前是没有写过了,经过此次的商城项目也学习到了。java
平时的话就是在B站上面看教学视频,而后本身看书,和同窗一块儿参加一些软件程序设计的比赛巩固之类的。python
团队的交流吧,若是团队缺乏交流的话,会致使不少问题。例如这个页面我是这样想的,而后和产品那边想的不同,缺少必要的交流致使你们都觉得是本身的想的那样。最后结果就不符合要求。mysql
咱们部门分红四个部分offer小组、PS小组、视频组、科技小组。offer小组主要是帮助学院完成平常文档任务、年终PPT的制做,PS小组主要是作一些宣传海报,视频组是作一些宣传视频,科技小组主要是帮学院完成一些网页、小程序的制做,以及咱们部门网站服务器的开发维护工做。linux
我所了解的是大家公司是作安全的,请问一下是作哪方面的安全?ios
一面HR的问题大概就是这些,问了一些近况以及学校的表现,学业压力等状况。 最后HR说三个工做日之类,会有通知结果。面试
同上redis
对,我是视频组的组长,帮助学院作过一个开学新生视频,还有数学建模的对外宣传视频。算法
这里就是创建了TCP链接,将我输入的数据经过HTTP请求发给后端服务器,在这里就是要进行一个TCP链接的创建。 假设主机A是TCP客户程序,B是TCP服务器程序。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开连接,服务器端被打开连接。一开始B的TCP服务器进程先建立传输控制块TCB,准备接受客户进程的连接请求,而后服务器进程就处于LISTEN收听状态,等待A的链接请求。 而后A的进程首先建立传输控制模块TCB。向B发出链接请求报文段,这是首部当中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN=1的报文段)不能写数据,但要消耗掉一个序号。这时候A就进入了同步已发送的状态。 B收到链接请求报文段后,若是赞成创建链接,则向A发送确认,在确认报文段中把SYN位和AVK位置都置为1,确认号为ack+1,同时也为本身选择一个初始序号y。一样的这个报文段也是不能写数据的,但同时要消耗掉一个序号。这时B进入了同步收到状态。 A收到B的确认以后,还要向B给出确认。确认报文段的ACK置1,确认号ack=y+1,而本身的seq=x+1。ACK报文段是能够携带数据的,但若是不携带数据则不消耗序号,在这种状况下,下一个数据报文段的序号仍为seq=x+1。 这时候TCP已经创建了。A进行入了已经创建链接的阶段状态。B收到确认后也进入了链接状态。
这部分面试的时候答的比较笼统,一些细节没说上来,就整理了一下。
首先IP地址其实时虚拟的地址,为了管理的方便。IP地址会经过ARP协议映射到链路层中的物理地址。以MAC帧的形式在链路层传送。IP地址在网络层的传输的话,就是经过子网掩码的与运算查看目的地址是否在局域网中,若是不在则经过路由器进行传输,在由路由器对网络进行与运算,直到找到目的地址。
进程是由多个线程组成的。 这二者根本区别是:线程是处理器分配调度的基本单位,进程是其余资源(除了处理器以外)分配的基本单位。另外进程的地址空间是私有的,处理器在进程之间切换时现场的保护/恢复的开销比较大,而同一进程的线程在处理器以内的切换时线程的保护/恢复的开销比较小。
我只是到了HTTPS的S就是SSL,可是我对这方面的不太了解。 下面是整理后的答案 服务器认证阶段: 1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话链接; 2)服务器根据客户的信息肯定是否须要生成新的主密钥,如须要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息; 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段: 1)在此以前,服务器已经经过了客户认证,这一阶段主要完成对客户的认证。 2)经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。 SSL协议提供的安全通道有如下三个特性: 机密性:SSL协议使用密钥加密通讯数据。 可靠性:服务器和客户都会被认证,客户的认证是可选的。 完整性:SSL协议会对传送的数据进行完整性检查。
那就是在进程中加锁,看需求,若是写比读多就加互斥锁锁,若是读比写多就加读写互斥锁,最后再defer这个锁。
go进程的等待是阻塞的,也就是说当我go一个进程以后,用sync.WaitGroup进行进程的管理,进程增长就是Add(),进程在执行就用Wait()对其进行阻塞等待。而后再用Done()完成。这样能对进程之间进行安全的管理。
这个当时答了能够,后来面试官提示了一下,就犹豫了,就说不知道了。
我不知道了,在计算机组成原理上面学的,计算机底层只有加法器。嗯嗯嗯,应该能够吧... 下面正解 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切片的底层其实就是数组,数组是不可边的,切片是可变的。
个人话就用append进行删除,把这一个值的下标的前一个和后一个继续append拼接,就把中间的与这个删掉了。
若是我不清楚go的map有没有特定函数进行排序的话,我会用两个切片对这个map的key进行存储,而后进行排序,在让map中的value按照切片中map进行输出。
go的反射,我只在书上看到过,可是项目中,我并无用过反射。我只是知道反射是能反射出输入数据的数据类型。 下面是整理 反射就是能检查程序在运行时的状态 reflect.ValueOf(h),获得实际的值,而且能够改变其字段值;
reflect.TypeOf(h),获得类型的元数据,经过t咱们能获取类型定义里面的全部元素; 若是需修改value,该struct类型的字段必须是大写,小写至关于private,是不能经过反射修改的,会报异常. 15. 你能讲一下你是如何定义接口返回类型的
个人话是专门写一个序列化的一个函数,每一个返回都进行一次序列化操做,就是一个接口定义专门的序列化函数,进行数据的返回。
错误码统一放置。一个项目,三分靠开发,七分靠维护。不过若是是200个的话,我以为应该是有不少接口是能够重复利用序列化的函数的,这个我以为可能就要看数据库的架构是怎么样的了,200个接口,若是是数据的架构问题,那我是改不了了,但若是不是数据库的架构问题,那我以为应该是有不少重复的,可能错误码就占到通常,因此就错误码统一放置。
go有着python的简洁,也能经过指针操做内存,因此有相似C++的性能(担任确定是比不上C++的),也不想java那么难部署,背后有Google公司。并且如今云计算,分布式大火,这些也是go的主场,因此我选择了go。
大家公司有那些业务用到go吗?
面试官的回答
咱们公司是用java的架构,如今是有一个很大的主节点,可是要有一些小的节点操做,若是用java的话就比较难部署,因此这部分小节点的业务咱们就打算用易于部署的go进行,go的部署很容易。
大概是这些问题,有些我记不太清楚了。最后面试官说等三个工做日。
2021年5月31日更新
和上面同样
由于我是班级团支书,也担任学院学生会部门的副部,平时学业之外还有其余的学生工做,我以为以前能平衡好学习和学生工做,这个也能够的。
这个学期还好,上个学期就有点失衡,因此上学期的绩点就有点低,那我是水课的话就用来作做业或是作学生工做,专业课认真听讲,当天做业就当天完成,绝对不能拖。必须提升效率,大概就是这样。
我最大的变化我以为是,服从上级吧,之前我是有什么本身的想法就提,可是老是被反驳回来,后来我以为就算了,上级这样安排,也有上级的道理,我以为在公司也是同样的道理,上级安排了什么任务,什么事情,也是有必定的道理的。
我以为我应该还会的,我还年轻,正值热血青年,可能态度就不想当初那么坚硬了,我提出个人想法,上级或是他人接不接收就看他们本身了。
首先,若是是一开始进入公司,我和leader的想法还没融合的话,我以为我应该会想让leader 把任务列出来,step by step,由于我不知道leader是不是我所想的那样的,等后面和leader磨合了以后,我可能就已经知道leader想要什么效果,就不须要leader把任务列出来了。个人想法就是这样。
具体还有一些可有可无的就没打出来。也不是技术层面的,基本都是合做层面。