这个一般分为两个层次,初中级开发(1-1、1-2)和高级开发(2-1、2-2),不同级别的面试一般要求是不一样的。对于初中级开发,一般会问一些语言层面的东西,一些常用的基础原理和一些算法,但是高级开发就没那么简单了。下面我为读者分享一段面试的经历。
面试官:你平常使用什么编程语言比较多?
面试者:go。
面试官:好的,那我们聊一下一些go相关的问题吧。
面试者:好的。
面试官:用过fallthrough关键字吗?这个关键字的作用是什么?
面试者:其他语言中,switch-case结构中一般都需要在每个case分支结束处显式的调用break语句以防止前一个case分支被贯穿后调用下一个case分支的逻辑,go编译器从语法层面上消除了这种重复的工作,让开发者更轻松;但有时候我们的场景就是需要贯穿多个case,但是编译器默认是不贯穿的,这个时候fallthrough就起作用了,让某个case分支再次贯穿到下一个case分支。
面试官:go中除了加Mutex锁以外还有哪些方式安全读写共享变量?
面试者:go中Goroutine可以通过Channel进行安全读写共享变量。
面试官:无缓冲Chan的发送和接收是否同步?
面试者:举两个例子:
//无缓冲的channel由于没有缓冲发送和接收需要同步.ch:=make(chanint)//有缓冲channel不要求发送和接收操作同步.ch:=make(chanint,2)
因此channel无缓冲时,发送阻塞直到数据被接收,接收阻塞直到读到数据;channel有缓冲时,当缓冲满时发送阻塞,当缓冲空时接收阻塞。
面试官:请谈一谈go语言的并发机制以及它所使用的CSP并发模型。
面试者:CSP模型是上个世纪七十年代提出的,不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。用于描述两个独立的并发实体通过共享的通讯channel(管道)进行通信的并发模型。CSP中channel是第一类对象,它不
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
先放上一个图示方便理解
然后放上目录结构
├─application应用目录(可设置)│├─