@
voidmnwzp 倒也没有一定之规,不会有人给你讲「代码行数>多少」、「依赖多到 xxxx 」就算规模大的项目了。
项目经历全是 github 也可以啊,重要的是你有深度参与有价值的项目,要形成一些自己的实践和理解。
举例来说,我面试会问 goroutine 开多了怎么确保不会出现竞争条件?
很多应聘者就说「既然在写多线程并发的程序,我当然会在数据使用上非常小心,避免写出这样的程序」
这就很废话,属于张口就来,不像是写过复杂项目的。
我个人认为更好的回答是:go 工具链中自带了竞争检测器,我只需要在 go run 或 go test 时加参数 -race ,编译器会插桩代码,所有代码在访问内存时,会记录访问时间和方法。同时运行时库会观察对共享变量的未同步访问。当这种竞争行为被检测到,就会输出一个警告信息。只要我的测试覆盖足够充分,就能在开发阶段消除掉竞争条件。
另一个例子,没用 go 写过守护进程的人是不会思考这种问题的:
https://v2ex.com/t/851071但守护进程是多么常见的一种需求——对一个需要稳定在后台运行的程序,你多少都会接触到这样的思考。
有过这种思考的我就认为是写过复杂项目的。否则就只能说是会语法而已。