- 博客(262)
- 资源 (6)
- 收藏
- 关注
原创 golang面试-day105
参考答案及解析:D。加锁后复制变量,会将锁的状态也复制,所以 mu1 其实是已经加锁状态,再加锁会死锁。参考答案及解析:B。能正确输出,不过主协程会阻塞 f() 函数的执行。
2024-08-18 09:20:55 328
原创 golang面试-day104
参考答案及解析:D。WaitGroup 在调用 Wait() 之后不能再调用 Add() 方法的。参考答案及解析:ABC。
2024-08-17 20:43:19 303
原创 golang面试-day103
参考答案及解析:输出 0 40 50。知识点:defer 语句与返回值。函数的 return value 不是原子操作,而是在编译器中分解为两部分:返回值赋值 和 return。参考答案及解析:D。当写锁阻塞时,新的读锁是无法申请的(有效防止写锁饥饿),导致死锁。
2024-08-16 17:51:04 464
原创 golang面试-day102
参考答案及解析:第一个是声明无缓存通道,第二个是声明缓存为 1 的通道。无缓存通道需要一直有接收者接收数据,写操作才会继续,不然会一直阻塞;而缓冲为 1 则即使没有接收者也不会阻塞,因为缓冲大小是 1 ,只有当放第二个值的时候,第一个还没被人拿走,这时候才会阻塞。注意这两者还是有区别的。参考答案即解析:D。使用 Lock() 加锁后,不能再继续对其加锁,直到利用 Unlock() 解锁后才能再加锁。
2024-08-16 17:50:33 457
原创 golang面试-day100
参考答案即解析:在执行 Get() 方法时可能报错。虽然可以使用 sync.Mutex 做写锁,但是 map 是并发读写不安全的。map 属于引用类型,并发读写时多个协程是通过指针访问同一个地址,即访问共享变量,此时同时读写资源存在竞争关系,会报错 “fatal error: concurrent map read and map write”。参考答案即解析:按字母无序输出。知识点:遍历 map 是无序的。
2024-08-15 12:23:30 231
原创 golang面试-day99
参考答案即解析:编译通过。true 是预定义标识符可以用作变量名,但是不建议这么做。参考答案即解析:100。知识点:变量作用域和defer 返回值。
2024-08-14 10:02:28 670
原创 golang面试-day98
参考答案及解析:1。知识点:变量的作用域。注意 for 语句的变量 a 是重新声明,它的作用范围只在 for 语句范围内。参考答案即解析:编译错误。知识点:变量的作用域。编译错误信息:ret is shadowed during return。
2024-08-14 10:01:49 255
原创 golang 面试-day97
参考答案及解析:输出 0。使用值类型接收者定义的方法,调用的时候,使用的是值的副本,对副本操作不会影响的原来的值。如果想要在调用函数中修改原值,可以使用指针接收者定义的方法。参考答案及解析:A。知识点:map 的使用。可以查看《Go Map》
2024-08-14 10:01:07 456
原创 golang面试-day96
参考答案及解析:get() 函数返回的切片与原切片公用底层数组,如果在调用函数里面(这里是 main() 函数)修改返回的切片,将会影响到原切片。参考答案及解析:输出 [{1 2} {3 4}]。知识点:for range 循环。range 循环的时候,获取到的元素值是副本,就比如这里的 p。
2024-08-13 09:15:09 254
原创 golang面试-day95
参考答案及解析:false true true。这道题唯一有疑问的地方就在第一个比较,Go 语言里没有引用变量,每个变量都占用一个惟一的内存位置,所以第一个比较输出 false。这个知识点在《Go 语言没有引用传递》有介绍。参考答案及解析:1、2随机输出。
2024-08-13 09:14:29 133
原创 golang面试-day94
参考答案及解析:C() 函数不能通过编译。C() 函数的 default 属于关键字。string 和 len 是预定义标识符,可以在局部使用。nil 也可以当做变量使用,不过不建议写这样的代码,可读性不好,小心被接手你代码的人胖揍。参考答案及解析:a。Go 语言里面 ^ 表示按位异或,而不是求幂。
2024-08-13 09:13:52 288
原创 golang面试-day92
参考答案及解析:编译失败。init() 函数不能被其他函数调用,包括 main() 函数。参考答案即解析:利用 copy() 函数的功能:切片复制,并且返回两者长度的较小值。
2024-08-13 09:12:42 382
原创 golang面试-day91
参考答案及解析:Unnamed Type 不能作为方法的接收者。参考答案及解析:第二段代码能通过编译。除 init() 函数之外,一个包内不允许有其他同名函数。
2024-08-11 09:43:09 535
原创 golang面试-day90
我们将这两道题目放到一块做一个解析,第一题不能通过编译,第二题可以通过编译。我们知道不同类型的值是不能相互赋值的,即使底层类型一样,所以第一题编译不通过;对于底层类型相同的变量可以相互赋值还有一个重要的条件,即至少有一个不是有名类型(named type)。Unnamed Type 是基于已有的 Named Type 组合一起的类型,例如:struct{}、[]string、interface{}、map[string]bool 等。
2024-08-11 09:42:34 437
原创 golang 面试-day89
参考答案及解析:能编译通过,输出 [1 2 3 0 1 2]。for 循环开始的时候,终止条件只会计算一次。参考答案及解析:C。指针变量指向相同的地址。
2024-08-11 09:41:46 421
原创 golang 面试-day88
参考答案及解析:false。在 Go 语言里面,^ 作为二元运算符时表示按位异或:对应位,相同为 0,相异为 1。例如,有我们熟悉的组合(3,4,5)、(6、8、10)等。1+6=7,这当然是相等的。你来试试分解下第二段代码的数学表达式。问题来了,下面代码输出什么,请简要说明。参考答案及解析:AD。
2024-08-09 08:52:32 318
原创 golang 面试-day87
参考答案及解析:false。在 Go 语言里面,^ 作为二元运算符时表示按位异或:对应位,相同为 0,相异为 1。例如,有我们熟悉的组合(3,4,5)、(6、8、10)等。1+6=7,这当然是相等的。你来试试分解下第二段代码的数学表达式。问题来了,下面代码输出什么,请简要说明。参考答案及解析:AD。
2024-08-09 08:51:45 234
原创 golang面试-day86
参考答案及解析:118。Go 语言里面,八进制数以 0 开头,十六进制数以 0x 开头,所以 Decade 表示十进制的 8。参考答案及解析:43200 hours and 600 seconds。知识点:运算符优先级。和 % 的优先级相同,从左向右结合。
2024-08-09 08:50:36 169
原创 golang面试-day85
参考答案及解析:输出空字符。这是一个大多数人遇到的坑,TrimRight() 会将第二个参数字符串里面所有的字符拿出来处理,只要与其中任何一个字符相等,便会将其删除。想正确地截取字符串,可以参考 TrimSuffix() 函数。参考答案及解析:输出 []。copy(dst, src) 函数返回 len(dst)、len(src) 之间的最小值。如果想要将 src 完全拷贝至 dst,必须给 dst 分配足够的内存空间。或者直接使用 append()
2024-08-08 20:48:59 158
原创 golang面试-day84
参考答案及解析:B。由 panic 引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。
2024-08-08 20:48:20 144
原创 golang面试-day83
参考答案及解析:A。一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。结构体类型 data 没有实现接口 printer。参考答案及解析:编译报错。
2024-08-08 20:47:02 154
原创 golang面试-day82
参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。参考答案及解析:4。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。
2024-08-08 20:46:28 372
原创 golang面试-day81
参考答案及解析:A。Go语言的内存回收机制规定,只要有一个指针指向引用一个变量,那么这个变量就不会被释放(内存逃逸),因此在 Go 语言中返回函数参数或临时变量是安全的。参考答案即解析:运行时错误。
2024-08-08 20:45:50 309
原创 golang面试-day80
参考答案及解析:AD。全局变量要定义在函数之外,而在函数之外定义的变量只能用 var 定义。短变量声明 := 只能用于函数之内。
2024-08-08 20:45:09 171
原创 实现的基于fabric 2.X 的中药饮片代煎配送联盟链项目的业务系统-中药煎配智能管理系统的核心代码讲解
这段代码是中药煎配智能管理系统的API路由配置部分,它定义了与用户交互的HTTP接口。该系统利用计算机控制、物联网及互联网技术,对煎药工艺流程、客户服务、设备和人员管理以及煎药工艺质量控制等环节进行全过程控制与管理。
2024-08-08 12:03:55 626
原创 基于联盟链Fabric 2.X的中药饮片代煎配送服务与监管平台07智能合约设计-智能合约如何测试
代码是基于Hyperledger Fabric 2.X平台,利用Go语言在Goland IDE中编写的智能合约(Chaincode)的Mock测试方法。Mock测试是一种软件测试技术,它允许开发者在不运行完整代码或依赖外部系统(如数据库、网络服务等)的情况下,对代码进行测试。在这个例子中,Mock测试用于测试智能合约的各种功能,包括处方上传、查询、煎药记录上传、物流信息上传以及处方历史变更查询等。
2024-08-08 11:40:29 138
原创 基于联盟链Fabric 2.X的中药饮片代煎配送服务与监管平台-07智能合约设计
智能合约代码是基于Hyperledger Fabric 2.X平台设计的,旨在为中药饮片代煎配送联盟链提供核心的业务逻辑处理。
2024-08-08 11:31:04 62
原创 基于联盟链Fabric 2.X的中药饮片代煎配送服务与监管平台-06数据库设计
这个数据库设计是为了支持中药饮片代煎配送服务而设计的,涵盖了从药品管理、处方管理、煎药过程、配送到用户反馈等多个环节。
2024-08-08 11:24:44 62
原创 golang面试-day76
知识点:类型断言,结构体嵌套。结构体 S2 嵌套了结构体 S1,S2 自己没有实现 g() ,调用的是 S1 的 g()。参考答案及解析:协程里面,使用 wg.Add(1) 但是没有 wg.Done(),导致 panic()。
2024-08-08 07:47:37 222
原创 golang 面试-day75
参考答案及解析:recover:1。知识点:panic、recover()。当程序 panic 时就不会往下执行,可以使用 recover() 捕获 panic 的内容。参考答案及解析:defer 语句应该放在 if() 语句后面,先判断 err,再 defer 关闭文件句柄。
2024-08-08 07:46:48 127
原创 golang 面试-day74
参考答案及解析:2、3正确。知识点:简短变量声明。参考答案及解析:for {} 独占 CPU 资源导致其他 Goroutine 饿死。引自《Go语言高级编程》
2024-08-08 07:46:02 130
原创 golang 面试-day73
参考答案及解析:{5}。这道题容易忽视的点是,String() 是指针方法,而不是值方法,所以使用 Println() 输出时不会调用到 String() 方法。参考答案及解析:312。对比昨天的第二题,本题的 s.Add(1).Add(2) 作为一个整体包在一个匿名函数中,会延迟执行。
2024-08-07 20:16:19 145
原创 golang面试-day72
所以可以循环调用方法 Add();2.defer 函数的参数(包括接收者)是在 defer 语句出现的位置做计算的,而不是在函数执行的时候计算的,所以 s.Add(1) 会先于 s.Add(3) 执行。,对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反。参考答案及解析:132。这一题有两点需要注意:1.Add() 方法的返回值依然是指针类型。,它返回一个每个 bit 位都取反的数。从参考答案及解析:错。
2024-08-07 20:15:36 127
原创 golang面试-day70
参考答案及解析:BD。知识点:单引号、双引号和字符串连接。在 Go 语言中,双引号用来表示字符串 string,其实质是一个 byte 类型的数组,单引号表示 rune 类型。参考答案及解析:43。
2024-08-07 20:15:00 427
原创 golang面试-day68
参考答案及解析:22222。知识点:defer()、for-range。for-range 虽然使用的是 :=,但是 v 不会重新声明,可以打印 v 的地址验证下。参考答案及解析:goto 不能跳转到其他函数或者内层代码。
2024-08-07 20:13:36 117
酒店管理系统(extjs+sqlserver2005)
2013-02-21
流风通用管理框架源码
2013-02-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人