Go语言介绍:
Go 是一个开源的 编程语言 ,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go语言的特色:简洁、快速、安全
并行、有趣、开源
内存管理、v数组安全、编译迅速
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
哪些大公司在用:这个不用多做介绍,作为开发Go语言的公司,当仁不让。
Facebook也在用,为此他们还专门在 Github 上建立了一个开源组织facebookgo,大家可以通过github访问查看facebook开源的项目,比如著名的是平滑升级的grace。
腾讯
腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践。
看腾讯的招聘信息,也在招聘Go开发工程师,主要职责是:
和蓝鲸平台,容器开发有关。腾讯作为主要使用C/C++的公司,使用Go会方便很多,也有很多优势,不过日积月累的C/C++代码很难改造,也不敢动,所以新业务会在Go方面尝试,这在一个群里也得到了证实。
百度
目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享。
其次就是百度的消息系统,从其最近的Golang招聘介绍就可以看出来.
负责公司手百消息通讯系统服务器端开发及维护
阿里
阿里巴巴 具体的项目不太清楚,不过听说其系统部门、CDN等正在招Go方面的人。
京东
京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。
小米
小米对Golang的支持,莫过于运维监控系统的开源,也就是 open-falcon 。
此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。
360
360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上。
还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上。
最后偷偷的告诉你,360直播在招聘Golang开发工程师。
小编也是看到了Go语言确实不错,开始搜集整理Go语言常见面试题,本文包括10道Go语言基础题,未来会定期搜集更多Go语言面试题。
面试题:1、简单介绍一下Golang。
谷歌开发的一种系统编程语言。它具有内置的垃圾收集机制并支持并发。代码可以编译成单个可执行二进制文件,不需要添加库或运行时环境即可在服务器上执行。
2、Golang是否可以声明一个类?
是的,Golang用一种独特的类型接口方式实现类。
详情请移步:如何声明一个Golang类
3、Go是否支持 泛型 ?(陷阱问题)
否,泛型是方便的,但是它们在类型系统和运行时的复杂性方面付出了代价。
4。从GitHub或者bitbucket导入代码的命令是什么?
go get 和 go install 命令
5。一个通过make()命令创建的缓冲区被分配了一块内存后。如何销毁缓冲区并收回内存?
buffer = nil
在运行时,buffer = nil将启动垃圾回收。
6。以下内容表示什么?(陷阱问题)
var num int( 整型变量 )
var prt * int(指针)
num=10(赋值10到变量num)
ptr = &num(指针指向变量num的内存地址)
7。切片和数组的显著差异是什么?
数组大小是固定的,切片大小不是。在运行时可以动态地增加或减少切片的大小,但数组不可以。切片类似于链表,可以向切片push,pop数据,实现FIFO,LIFO。使用了内置的添加、复制功能对切片操作。
8。cap()和len()函数的区别是什么?
len()返回切片中的元素个数。
cap()返回切片的容量即切片可以容纳的元素数量。
9。 哈希表 或哈希映射允许快速查找。GO如何实现哈希映射?(陷阱问题)
哈希表在Golang中相当于map,也就是哈希映射。
hash-table := make(map[string]string)
10。以下哪些函数,变量,标识符可以被导出,或者可以被外部函数调用?(陷阱问题)
var aName // private , 私有,只在函数或声明范围内可访问
var BigBro // public 公有,可导出
var 123abc // 非法
var 爱 = “love” // public 公有,可导出
func (p *Person) SetEmail(email string) { // public 因为SetEmail()函数以大写字母开头
p.email = email
}
func (p Person) email() string { // private 私有,因为email()函数以小写字母开头
return p.email
}
总结:
事实上,即使Golang的高级开发人员也可能在一些问题上掉入陷阱。大多数人可以舒舒服服地在谷歌搜索引擎的辅助下写代码。只要候选人知道如何回答这些基本的Golang问题,会使用搜索引擎或论坛找到问题的正确答案,已然是足够好的了。