Go经典面试题汇总(填空+判断)

目录
  • 填空题
    • 1.   【初级】声明一个整型变量i__________
    • 2.   【初级】声明一个含有10个元素的整型数组a__________
    • 3.   【初级】声明一个整型数组切片s__________
    • 4.   【初级】声明一个整型指针变量p__________
    • 5.   【初级】声明一个key为字符串型value为整型的map变量m__________
    • 6.   【初级】声明一个入参和返回值均为整型的函数变量f__________
    • 7.   【初级】声明一个只用于读取int数据的单向channel变量ch__________
    • 8.   【初级】假设源文件的命名为slice.go,则测试文件的命名为__________
    • 9.   【初级】 go test要求测试函数的前缀必须命名为__________
    • 10. 【初级】启动一个goroutine的关键字是__________
  • 判断题
    • 1.   【初级】数组是一个值类型()
    • 2.   【初级】使用map不需要引入任何库()
    • 3.   【中级】内置函数delete可以删除数组切片内的元素()
    • 4.   【初级】指针是基础类型()
    • 5.   【初级】 interface{}是可以指向任意对象的Any类型()
    • 6.   【中级】下面关于文件操作的代码可能触发异常()
    • 7. 【初级】 Golang不支持自动垃圾回收()
    • 8. 【初级】 Golang支持反射,反射最常见的使用场景是做对象的序列化()
    • 9. 【初级】 Golang可以复用C/C++的模块,这个功能叫Cgo()
    • 10. 【初级】下面代码中两个斜点之间的代码,比如json:"x",作用是X字段在从结构体实例编码到JSON数据格式的时候,使用x作为名字,这可以看作是一种重命名的方式()
    • 11. 【初级】通过成员变量或函数首字母的大小写来决定其作用域()
    • 12. 【初级】对于常量定义zero(const zero = 0.0),zero是浮点型常量()
    • 13. 【初级】对变量x的取反操作是~x()
    • 14. 【初级】下面的程序的运行结果是xello()
    • 15. 【初级】 golang支持goto语句()
    • 16. 【初级】下面代码中的指针p为野指针,因为返回的栈内存在函数结束时会被释放()
    • 17. 【初级】匿名函数可以直接赋值给一个变量或者直接执行()
    • 18. 【初级】如果调用方调用了一个具有多返回值的方法,但是却不想关心其中的某个返回值,可以简单地用一个下划线“_”来跳过这个返回值,该下划线对应的变量叫匿名变量()
    • 19. 【初级】在函数的多返回值中,如果有error或bool类型,则一般放在最后一个()
    • 20. 【初级】错误是业务过程的一部分,而异常不是()
    • 21. 【初级】函数执行时,如果由于panic导致了异常,则延迟函数不会执行()
    • 22. 【中级】当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。
    • 23. 【初级】同级文件的包名不允许有多个()
    • 24. 【中级】可以给任意类型添加相应的方法()
    • 25. 【初级】 golang虽然没有显式的提供继承语法,但是通过匿名组合实现了继承()
    • 26. 【初级】使用for range迭代map时每次迭代的顺序可能不一样,因为map的迭代是随机的()
    • 27. 【初级】 switch后面可以不跟表达式()
    • 28. 【中级】结构体在序列化时非导出变量(以小写字母开头的变量名)不会被encode,因此在decode时这些非导出变量的值为其类型的零值()
    • 29. 【初级】 golang中没有构造函数的概念,对象的创建通常交由一个全局的创建函数来完成,以NewXXX来命名()
    • 30. 【中级】 channel本身必然是同时支持读写的,所以不存在单向channel()

Golang精编100题

能力模型(测试)

初级primary:

熟悉基本语法,能够看懂代码的意图;
在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范;

中级intermediate:

能够独立完成用户故事的开发和测试;
能够嗅出代码的坏味道,并知道如何重构达成目标;

高级senior:

能够开发出高质量高性能的代码;
能够熟练使用高级特性,开发编程框架或测试框架;

填空题

1.   【初级】声明一个整型变量i__________

参考答案:var i int

2.   【初级】声明一个含有10个元素的整型数组a__________

参考答案:var a [10]int

3.   【初级】声明一个整型数组切片s__________

参考答案:var s []int

4.   【初级】声明一个整型指针变量p__________

参考答案:var p *int

5.   【初级】声明一个key为字符串型value为整型的map变量m__________

参考答案:var m map[string]int

6.   【初级】声明一个入参和返回值均为整型的函数变量f__________

参考答案:var f func(a int) int

7.   【初级】声明一个只用于读取int数据的单向channel变量ch__________

参考答案:var ch <-chan int

8.   【初级】假设源文件的命名为slice.go,则测试文件的命名为__________

参考答案:slice_test.go

9.   【初级】 go test要求测试函数的前缀必须命名为__________

参考答案:Test

10. 【初级】启动一个goroutine的关键字是__________

参考答案:go

判断题

1.   【初级】数组是一个值类型()

参考答案:T

2.   【初级】使用map不需要引入任何库()

参考答案:T

3.   【中级】内置函数delete可以删除数组切片内的元素()

参考答案:F

4.   【初级】指针是基础类型()

参考答案:F

5.   【初级】 interface{}是可以指向任意对象的Any类型()

参考答案:T

6.   【中级】下面关于文件操作的代码可能触发异常()

file, err := os.Open("test.go")
defer file.Close()
if err != nil {
fmt.Println("open file failed:",err)
return
}
...

参考答案:T

7. 【初级】 Golang不支持自动垃圾回收()

参考答案:F

8. 【初级】 Golang支持反射,反射最常见的使用场景是做对象的序列化()

参考答案:T

9. 【初级】 Golang可以复用C/C++的模块,这个功能叫Cgo()

参考答案:F

10. 【初级】下面代码中两个斜点之间的代码,比如json:"x",作用是X字段在从结构体实例编码到JSON数据格式的时候,使用x作为名字,这可以看作是一种重命名的方式()

type Position struct {
X int `json:"x"`
Y int `json:"y"`
Z int `json:"z"`
}

参考答案:T

11. 【初级】通过成员变量或函数首字母的大小写来决定其作用域()

参考答案:T

12. 【初级】对于常量定义zero(const zero = 0.0),zero是浮点型常量()

参考答案:F

13. 【初级】对变量x的取反操作是~x()

参考答案:F

14. 【初级】下面的程序的运行结果是xello()

func main() {
str := "hello"
str[0] = 'x'
fmt.Println(str)
}

参考答案:F

15. 【初级】 golang支持goto语句()

参考答案:T

16. 【初级】下面代码中的指针p为野指针,因为返回的栈内存在函数结束时会被释放()

type TimesMatcher struct {
base int
}
func NewTimesMatcher(base int) *TimesMatcher{
return &TimesMatcher{base:base}
}
func main() {
p := NewTimesMatcher(3)
...
}

参考答案:F

17. 【初级】匿名函数可以直接赋值给一个变量或者直接执行()

参考答案:T

18. 【初级】如果调用方调用了一个具有多返回值的方法,但是却不想关心其中的某个返回值,可以简单地用一个下划线“_”来跳过这个返回值,该下划线对应的变量叫匿名变量()

参考答案:T

19. 【初级】在函数的多返回值中,如果有error或bool类型,则一般放在最后一个()

参考答案:T

20. 【初级】错误是业务过程的一部分,而异常不是()

参考答案:T

21. 【初级】函数执行时,如果由于panic导致了异常,则延迟函数不会执行()

参考答案:F

22. 【中级】当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。

调用者继续传递panic,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数。

如果一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,其他携程的终止过程也是重复发生:

函数停止执行,调用延迟执行函数()

参考答案:F

23. 【初级】同级文件的包名不允许有多个()

参考答案:T

24. 【中级】可以给任意类型添加相应的方法()

参考答案:F

25. 【初级】 golang虽然没有显式的提供继承语法,但是通过匿名组合实现了继承()

参考答案:T

26. 【初级】使用for range迭代map时每次迭代的顺序可能不一样,因为map的迭代是随机的()

参考答案:T

27. 【初级】 switch后面可以不跟表达式()

参考答案:T

28. 【中级】结构体在序列化时非导出变量(以小写字母开头的变量名)不会被encode,因此在decode时这些非导出变量的值为其类型的零值()

参考答案:T

29. 【初级】 golang中没有构造函数的概念,对象的创建通常交由一个全局的创建函数来完成,以NewXXX来命名()

参考答案:T

30. 【中级】 channel本身必然是同时支持读写的,所以不存在单向channel()

参考答案:F

以上就是Go经典面试题汇总(填空+判断)的详细内容,更多关于Go经典面试题的资料请关注我们其它相关文章!

(0)

相关推荐

  • 28个MongoDB经典面试题详解

    MongoDB是目前最好的面向文档的免费开源NoSQL数据库. 如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答. 这些MongoDB NoSQL面试问答涵盖了NoSQL数据库基本的概念,复制(Replication),分片(Sharding),事务和锁,跟踪分析工具(Profiler),Nuances和日志等特性. 让我们看看下面的这些MongoDB NoSQL数据库的面试问答吧: 1. 你说的NoSQL数据库是什么意思?NoSQL

  • Go语言面试题之select和channel的用法

    目录 select 先说switch...case... 再说select...case.. select类比switch 经典示例 运行结果 channel 1.从已经关闭并且没有值的通道中取值 2.从已经关闭并且有值的通道中取值 一图胜千言 总结 select 先说switch...case... switch...case... 很常用,且很好理解.其作用和if...else...一样. 区别是switch...case 相比于if...else...能让我们的代码看起来更清晰,更好理解.

  • GO必知必会的常见面试题汇总

    目录 引言 值类型和引用类型 值类型有哪些? 引用类型有哪些? 值类型和引用类型的区别? 垃圾回收 一图胜千言 堆和栈 栈 堆 切片 比较 比较的详解 深拷贝和浅拷贝 操作对象 区别如下: new和make new 特点 举个例子: 使用技巧 make make函数的函数签名 特点 使用技巧 小结:new与make的区别 go的map实现排序 解决思路 代码实现: 运行结果 逃逸分析 最后,听我说 引言 今年互联网的就业环境真的好糟糕啊,好多朋友被优化. 我们平常在工作中除了撸好代码,跑通项目之

  • PHP 分页类(模仿google)-面试题目解答

    笔试回答的不太好,特别是JS部分,也是许久都没复习的原因. 上机题目是要写一个仿google分页的类,当要取类似9/2的最大整数,却怎么也想不起函数ceil的名字,晕了半天. 最后测试程序没错误,但是就是不能正常显示,后来(回家后)一查才知道是语句:for($i=0;$i++;$i<9)写错了,于是下决心重新写一遍,于是就有了下面的代码了: 复制代码 代码如下: <?php /* 显示样式如下: [1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 首页 上页 1..12 1

  • 由面试题加深对Django的认识理解

    1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. #2.Django内置的ORM跟框架内的其他模块耦合程度高. #应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利: #理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修. #3.Django的卖点是超高的开发效

  • Golang精编49面试题汇总(选择题)

    目录 Golang精编100题 能力模型(测试) 选择题 1.   [初级]下面属于关键字的是() 2.   [初级]定义一个包内全局字符串变量,下面语法正确的是() 3.   [初级]通过指针变量 p 访问其成员变量 name,下面语法正确的是() 4.   [初级]关于接口和类的说法,下面说法正确的是() 5.   [初级]关于字符串连接,下面语法正确的是() 6.   [初级]关于协程,下面说法正确是() 7.   [中级]关于init函数,下面说法正确的是() 8.   [初级]关于循环

  • Go经典面试题汇总(填空+判断)

    目录 填空题 1.   [初级]声明一个整型变量i__________ 2.   [初级]声明一个含有10个元素的整型数组a__________ 3.   [初级]声明一个整型数组切片s__________ 4.   [初级]声明一个整型指针变量p__________ 5.   [初级]声明一个key为字符串型value为整型的map变量m__________ 6.   [初级]声明一个入参和返回值均为整型的函数变量f__________ 7.   [初级]声明一个只用于读取int数据的单向ch

  • Java经典面试题汇总--多线程

    目录 1. 并行和并发有什么区别? 2. 线程和进程的区别? 3. 守护线程是什么? 4. 实现多线程的方式有哪些? 5. 说一下 runnable 和 callable 有什么区别? 6. sleep() 和 wait() 有什么区别? 7. 线程有哪些状态? 8. notify()和 notifyAll()有什么区别? 9. 线程的 run() 和 start() 有什么区别? 10. 创建线程池有哪几种方式? 11. 线程池中 submit() 和 execute() 方法有什么区别? 1

  • Java经典面试题汇总:JVM

    目录 1. 说一下 JVM 的主要组成部分?及其作用? 2. 说一下 JVM 运行时数据区? 3. 说一下堆栈的区别? 4. 解释内存中的栈(stack).堆(heap)和静态区(static area)的用法 5. 类的生命周期 6. Java对象创建过程 7. 怎么判断对象是否可以被回收? 8. 什么是类加载器? 9. 什么是双亲委派模型? 10. 说一下类装载的执行过程? 11. Java 中都有哪些引用类型? 12. JVM 有哪些垃圾回收算法? 13. JVM 有哪些垃圾回收器? 14

  • Java经典面试题汇总:Java Web

    目录 1. JSP 和 servlet 有什么区别? 2. 什么是Tomcat? 3. Tomcat容器是如何创建Servlet类实例?用到了什么原理? 4. 拦截器和过滤器的区别? 5.说一下 JSP 的 4 种作用域? 6. JSP 有哪些内置对象?作用分别是什么? 7. Servlet的生命周期 8. session 和 cookie 有什么区别? 9. 说一下 session 的工作原理? 10. 如果客户端禁止 cookie 能实现 session 还能用吗? 11. JSP工作原理?

  • Java经典面试题汇总:Spring Boot

    目录 1. 什么是 Spring Boot? 2. 为什么要用 Spring Boot? 3. Spring Boot 核心配置文件是什么? 4. Spring Boot 提供了哪些常用的 Starter Project Options? 5. 如何快速构建一个Spring Boot项目? 6. Spring Boot默认的内置Web服务器是什么? 7. Spring Boot常用注解及其作用? 8. 如何使用配置文件通过 Spring Boot 配置特定环境的配置? 总结 1. 什么是 Spr

  • Java经典面试题汇总:Spring MVC

    目录 1. 什么是Spring MVC ? 2. Spring MVC 有哪些组件? 3. 说一下 Spring MVC 运行流程? 4. Spring MVC的优点: 5. @RequestMapping 的作用是什么? 6. 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置? 7. SpringMVC常用的注解有哪些? 8. SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代? 9. Spring MVC和Struts2的区别有哪些? 10. 怎么样在方法里面得到Re

  • Java经典面试题汇总:Mybatis

    目录 1. MyBatis 中 #{}和 ${}的区别是什么? 2. MyBatis 有几种分页方式? 3. MyBatis 逻辑分页和物理分页的区别是什么? 4. MyBatis 是否支持延迟加载?延迟加载的原理是什么? 5. 说一下 MyBatis 的一级缓存和二级缓存? 6. MyBatis 有哪些执行器(Executor)? 7. MyBatis 分页插件的实现原理是什么? 8. MyBatis如何返回主键? 9. Xml映射文件中,除了常见的select|insert|update|d

  • Java经典面试题汇总:Spring

    目录 1. 什么是Spring? 有哪些优点? 2. 什么是 AOP? 3. 什么是 IOC? 4. 什么是 DI? 5. Spring 有哪些核心模块? 6. Spring 常用的注入方式有哪些? 7. Spring 中的 Bean 是线程安全的吗? 8. Spring中Bean的作用域有哪些? 9. @Qualifier 注解 10. @Resource与@Autowired注解的区别? 11. Spring底层两种动态代理实现原理及区别? 12. Spring 事务实现方式有哪些? 13.

  • Java经典面试题汇总:异常

    目录 1. Java的异常机制 2. Java如何自定义异常? 3. throw 和 throws 的区别? 4. Java 中被检查的异常和不受检查的异常有什么区别? 5. final.finally.finalize 有什么区别? 6. try-catch-finally 中哪个部分可以省略? 7. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 8. Java 中什么时候使用断言? 9. 运行时异常与一般异常有何异同? 10.

  • Java经典面试题汇总:网络编程

    目录 1. HTTP 响应码 301 和 302 代表的是什么?有什么区别? 2. 简单说一下http协议? 3. HTTP与HTTPS的区别? 4. HTTP协议下客户端请求报文是什么? 5. HTTP协议服务器响应报文有哪些? 6. HTTP协议中的请求方法有哪些? 7. 常见的HTTP状态码有哪些? 8. forward 和 redirect 的区别? 9. 简述 tcp 和 udp的区别? 10. TCP 为什么要三次握手,两次不行吗?为什么? 11. 说一下 TCP 粘包是怎么产生的?

随机推荐