为什么有赞的golang 1.8面试官被人打了很多差评

其实本人不怎么喜欢电话面试,因为他来的总是很突然,电话没打来之前我又不知道会是电话面试,之前也没有说,只是告知我简历已收到,有消息会联系,仅此而已。
博主是昨天快下班时接到电话,当时一看是陌生电话没有去理会,后来发了信息给我说要电话面试,这我不就更不敢接了,一点准备都没有,而且还在工位上,想想算了,又没有接电话也没有回短信,假装没看到吧。
下班的时候想想回过去吧,说不定面的比较简单,试试吧,总不能机会来了还一次次闪过。
面试的整个过程持续了40分钟,我是一路走回去一路面试,路上比较吵,说实话也没什么心情,一点准备都没有,就是抱着蹭个面经的想法。
起初让我介绍一下我做的东西,讲真,这个确实没有好好准备,前期是迭代开发,做的是零零散散的需求,并且事实上我只做了一个版本吧,后面就投入到重构的中间件部分了,所以让我讲讲业务真的不怎么好讲,我只能说做迭代,改造接口,新增接口,都是现有的框架套路照着做就好了,这就是做外包的弊端,根本接触不到什么精妙的技术,工程下下来都没法单独启动,甚至有多少个模块多少个分层都搞不清楚,至于中间件的部分,我做的无非是先学习这一块知识,但是为了照顾整个开发进度或者也可能是能力有限,我几乎只是局限于把环境搭起来,把项目跑起来而已,至于用到的每一个开源框架有什么精妙的地方,同类框架之间有什么独特的区别优势,讲真,我真的真的不清楚,只是老大告诉我,用这个那我就用把。这是我需要转变的一个地方吧,对什么东西都只求一知半解,以前在我学习java的时候,总是嘲讽那些钻牛角尖的人,现在看来是应该我被嘲讽吧,很多时候,尤其是在学习的时候就应该有那些钻牛角尖的人的精神。
所以事实上在项目这块,我没什么好说,他也没啥好问的。
后面他问我设计模式,我简历上写着了解常用设计模式,事实上我了解的也就是单例和工厂,他说除了这两个还知道其他的不,我知道一些名词 什么代理 装饰 适配器 等等,但是我说不清是啥,像这些东西就是看到的时候看一下然后好像懂了,但是根本没有融入我的思想吧,我要好好反思一下了,很久以前我就告诉我自己我的目标是CTO,也许每一个程序都是这么想的,我要当CTO,一直以来我觉得只要扩展知识面就行,不需要深入,CTO嘛,不就是管理的嘛,技术的什么实现让下面的人去搞,我错了,我现在的重点不是扩展而是深入。
再后面他又想问我框架,框架这一块我会用,spring springmvc hibernate struts2 mybatis 甚至jfinal等等,我都在工作和学习中用过,甚至毫不夸张的说我确实可以比较轻松的解决框架整合的各种问题,靠什么,靠百度,也许我根本没有很深入得想过里面的东西,每次看过想关文档,总觉得特别有道理,但是过一会又忘了,没有深入我的内部,没有成为我思想的一部分,这是我最失败的地方,我只会拧螺丝确不知道为什么要拧螺丝为什么可以把螺丝拧进去。
再后面问我集合框架,list set 区别 ,ok不得不说,这一点还是可以说出来,list里可以存放重复元素,set不能重复,list可以根据索引访问,而set需要迭代。然后我又说了list下面的arraylist linkedlist的一些特性还是set下面常用的treeset hashset,底层结构等等吧,这些东西在很久以前就很熟悉了,没有特别困难,还有set如何实现去重,我说底层是map实现,set的值存在map的key上,看似顺理成章的,他说底层,ok,通过hashcode和equal这些都是比较常规的。
在后面问我一个实例变量,多个线程访问出现线程安全的问题,我说了volatile,并说道主内存和工作内存,这一块之前是看到过的,有点印象,不过今天查了一下,volatile只是保持数据在多线程中的可见性,不能保证有序性和原子性,我说可以在方法上加synchronized使得线程同步,这个确实是正确,但是他说效率低,太重量级。他告诉我可以使用原子类,cas,ok这一块事实上我也看到过,只是根本没有当回事,根本没记住。
最后让我不用现成的方法实现string转int,好吧,当时是抽了。。。。。。
非常简单的代码,
好吧,总结一下,学什么东西都不要只学表面,要知其然知其所以然!!
本文已收录于以下专栏:
相关文章推荐
昨天电话面试最后问了这么一题,太紧张了居然没有想到。思路就是把String转为char数组,char转int获得ascii值。关于char需要记住的ascii值:
‘a’ 97 ...
时间荏苒,过得真快,就快结束本科的学习生涯了,这段时间忙于找工作,现在终于告一个段落了,把之前的面试都总结一番,希望带给大家一份经验。
最Nice的是有赞公司面试,是我面过比BAT面试还爽的,整个过程...
今天第二次电话面试,总体感觉有点差,不够感觉学到了很多东西。面试官好像对我很失望……,加油努力。问:谈一下你最近做过的一两个项目答:我最近做的项目是一个小型电子病历系统,系统用到的是xml+swing...
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached...
1 业务分析
此部分见:业务分析
2 创建Maven项目        
基于Maven管理的项目
从官网获取资源(更加全面和权威,避免了过时和错误)
(1)完善目录结构,创建文件夹,得到如下目录结...
Dao层设计与实现=》接口设计+SQL编写
         实现了代码和SQL的分离,方便Review,dao层也叫做数据访问层,是对远程存储系统执行操作的过程,这些操作统一存放在Dao层。
   ...
下图为高并发秒杀系统的Mybatis+Spring+Spring MVC三大框架整合示意图:
       该项目主要整合运用Mybatis+Spring+Spring MVC三个框架来开发;同时这三个框架也是互联网公司的常用框架,比如美团、阿里、搜狐、京东等大型互联网网站常用这三...
我是如何同时拿到阿里和腾讯offer的
来源:程序员的那些事
20:23 我要评论
前言三月真是一个忙碌的季节,刚刚开学就需要准备各种面试和笔试.幸...
本文旨在加深对前端知识点的理解,资料来源于网络,由本人(博客:/u/trigkit4)
收集整理。
一些开放性题目
1.自我介绍:除了基本个人信息以外,...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
golang 配置ssh无密码登录,找到一个办法是需要SSH_AUTH_SOCK,然后使用如下代码连接
func SSHClient(hostport string, username string) (*ssh.Client, error) {
sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
if err != nil {
f("error login,details: %s",err.Error())
return nil,err
agent := agent.NewClient(sock)
signers, err := agent.Signers()
if err != nil {
f("error login,details: %s",err.Error())
return nil,err
auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}
cfg := &ssh.ClientConfig{
User: username,
Auth: auths,
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
return nil
cfg.SetDefaults()
f("tcp dial to %s",hostport)
client, err := ssh.Dial("tcp", hostport, cfg)
if err != nil {
f("error login,details: %s",err.Error())
return nil,err
return client, nil
在本机 macbook可以登录测试机,在测试机(Linux)上登录不到其他测试机。报错:
dial unix: missing address
机器中并没有SSH_AUTH_SOCK描述中的机器均已配置免密登陆。谢谢大家
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的私钥是不是有密码,试着在Linux 客户端执行ssh-agentssh-add ~/.ssh/id_dsa (你的私钥)
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:有赞客服为何这么diao? - 知乎16被浏览2846分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起查看更多回答你的位置: >
> golang中文件(file)操作示例
整理一下golang中关于文件操作的例子。目录结构:
golang文件file操作
因为后面都是使用相对路径,如果要执行相应代码,需要在os/file目录下执行,
package main
func main() {
// 打开一个文件
// os.O_CREATE 表示文件不存在就会创建
// os.O_APPEND 表示以追加内容的形式添加
// os.O_WRONLY 表示只写模式
// os.O_RDONLY 表示只读模式
// os.O_RDWR 表示读写模式
// os.O_EXCL used with O_CREATE, file must not exist
// os.O_SYNC I/O同步的方式打开
// os.O_TRUNC if possible, truncate file when opened.
file, err := os.OpenFile(&file.log&, os.O_CREATE|os.O_WRONLY, 0600)
if err != nil {
log.Fatalln(err)
// 写入字节流
n, err := file.Write([]byte(&你好&))
if err != nil {
log.Fatalln(err)
// 写入字符串
m, err := file.WriteString(&,世界&)
if err != nil {
log.Fatalln(err)
// 在指定的偏移处(offset)写入内容
_, err = file.WriteAt([]byte(&!&), int64(n+m))
if err != nil {
log.Fatalln(err)
运行后,文件写入内容:
你好,世界!
读取文件按字节读取
package main
func main() {
file, err := os.OpenFile(&file.log&, os.O_RDONLY, 0600)
if err != nil {
log.Println(err)
// 按字节读取
data := make([]byte, 100)
count, err := file.Read(data)
if err != nil {
log.Println(err)
fmt.Printf(&read %d bytes: %q\n&, count, data[:count])
// output: read 14 bytes: &你好,世界!&
读取文件一行行读取
package main
func main() {
file, err := os.OpenFile(&file.log&, os.O_RDONLY, 0600)
if err != nil {
log.Fatalln(err)
buff := bufio.NewReader(file)
for i := 1; ; i++ {
line, err := buff.ReadBytes('\n')
if err != nil && err != io.EOF {
log.Fatalln(err)
fmt.Printf(&%d line: %s&, i, string(line))
// 文件已经到达结尾
if err == io.EOF {
// output: 1 line: 你好,世界!
fmt.Println()
读取文件一次读取全部
package main
&io/ioutil&
func main() {
data, err := ioutil.ReadFile(&file.log&)
if err != nil {
log.Fatalln(err)
fmt.Println(string(data))
// output: 你好,世界!
package main
func main() {
file, err := os.Create(&file.log&)
if err != nil {
log.Fatalln(err)
fmt.Println(file)
判断文件是否存在
package main
func main() {
_, err := os.Stat(&file.log&)
if err != nil && !os.IsNotExist(err) {
log.Fatalln(err)
if os.IsNotExist(err) {
fmt.Println(&文件不存在&)
fmt.Println(&文件存在&)
package main
func main() {
// 创建当个目录
err := os.Mkdir(&tmp&, 0755)
if err != nil {
log.Fatalln(err)
// 递归创建目录
err = os.MkdirAll(&tmp/tmp1/tmp2&, 0755)
if err != nil {
log.Fatalln(err)
转载请注明: &
与本文相关的文章}

我要回帖

更多关于 golang 为什么被墙 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信