面了两个三年以上经验的JAVA,我想了很久
事情经过是这样的。由于项目需要,公司想招一个会java开发,同时也有linux基础的人。
其实要求并不算高,对于java只要会基础的开发技能,对微服务有概念,springCloud中常用组件会基础应用,数据库最好用过oracle,linux真的就是只要会基础命令。
经过一轮电话面试之后,两个候选人的情况大概是:
A掌握的技术栈基本能满足,我看过他的博客,两年前就写了关于springcloud相关的几篇博客,后面也有jvm调优相关的,只是没有用过oracle。
B掌握的技术栈没有A丰富,尤其是微服务这块只是有概念,没有实际用过,但是用过oracle。
领导说再进行一次线下面试,看看实操能力。于是进行了二轮现场面试。考虑到B没有真正用过springCloud,而这块内容在我们项目中的应用也比较简单,只要有点概念,就算从零开始带一下没多久也能掌握,我没有刻意考这块内容。
我给的实操内容非常非常简单:1,从零开始建一个WEB项目,浏览器访问能出一个欢迎页,打印一句话就行
2,把项目打成war包
3,把项目传到服务器上用给的tomcat跑起来,能正常访问
备注:编辑器用eclipse或者idea都可以;构建方法不限制,最原始的方法可以,gradle,maven也可以;阿里云服务器我准备好了,连上了,tomcat也准备好了;可以百度,用的是我的电脑,外网都连好的
相信很多人也会觉得非常简单,不要两分钟就能搞定。我的预期不说两分钟吧,十分钟以内应该都没问题,主要是看看整个操作流程是否熟悉。
但是,但是,结果很出乎意料
A用了快一个小时没搞定,中途我提示了好几次
B用了四十分钟才出效果,关键点我也给了提示
三年实际工作经验啊,是我给的实操题有问题吗?
我相信闻道有先后,术业有专攻。但是作为一个可以说,靠javaweb开发吃饭的人,这是基本功啊。
大概实操过程是这样的:
A :一上来就问我,之前都是直接拉取别人建的项目,没有自己建,可不可以用之前的项目,我告诉他建个工程这不是很简单的事吗,拒绝了他,然后他选择用idea,建的maven项目,七搞八搞从网上找了个web.xml文件头,搜了pom打包方式怎么配置,最后打了war包,传到服务器把项目跑起来之后,想看服务器地址是啥,ifconfig一看懵逼了
[root@izuf6eofz5f9y5uh09jxboz ~]# ifconfig
br-365e428c9a9c: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.19.0.1 netmask 255.255.0.0 broadcast 172.19.255.255
ether 02:42:7d:d4:96:ef txqueuelen 0 (Ethernet)
RX packets 222956 bytes 23168087 (22.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 222956 bytes 23168087 (22.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
br-63cbb76f5553: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
ether 02:42:a8:d9:33:73 txqueuelen 0 (Ethernet)
RX packets 5377 bytes 1288364 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7909 bytes 854404 (834.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
br-e3bc1188564a: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.20.0.1 netmask 255.255.0.0 broadcast 172.20.255.255
ether 02:42:dd:aa:3c:23 txqueuelen 0 (Ethernet)
RX packets 222956 bytes 23168087 (22.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 222956 bytes 23168087 (22.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:a7:16:ea:ba txqueuelen 0 (Ethernet)
RX packets 66186 bytes 10477613 (9.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 83242 bytes 45363215 (43.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.24.62.221 netmask 255.255.192.0 broadcast 172.24.63.255
ether 00:16:3e:24:0e:6f txqueuelen 1000 (Ethernet)
RX packets 109506125 bytes 12667319612 (11.7 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1827205008 bytes 120114198633 (111.8 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 222956 bytes 23168087 (22.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 222956 bytes 23168087 (22.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth8998513: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 16:f3:df:dc:44:62 txqueuelen 0 (Ethernet)
RX packets 5377 bytes 1288364 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7909 bytes 854404 (834.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@izuf6eofz5f9y5uh09jxboz ~]#
这时他心里肯定十万个尼玛这啥呀?
没啥兄弟。你用公网地址就行了,看这里。
启动的时候没看日志,哪个端口访问来着?
还好知道tail -f logs/catanina.out
哦,8009
47.103.5.78:8009/index.html
这又是啥?
好吧,兄弟,端口对吗?
好像不对,换一个
也不对啊
这个也不对,不是我的首页啊,还是换回8009
(我真的是不知道说啥了),刚才tomcat首页不是看到了吗,说明端口没问题对吧。
那应该是还要加项目名
47.103.5.78:80/untitled-1.0-SNAPSHOT/index.html
啥情况啊?
还好知道看日志
然后就这个问题一直没解决。。。
B: 也是用idea,建maven项目。建项目,打包,部署一气呵成,公网IP我告诉他了,然后他就访问http://47.103.5.78:8080/DemoProject-1.0-SNAPSHOT/index.html
我问:你怎么知道服务端口是8080?
然后去看了server.xml,也没看出是啥
我提醒去看日志,然后跟前面的一样,换成8009
。。。
我再问,你访问百度的地址时,端口是啥?
他回答:8080
我再问:8080可以省略的?
好吧,他不知道http协议默认端口是80,我跟他讲了
再次访问是这样
补充一点:他在idea里面建好项目之后是没有本地测试的。这时候才想到来开发环境部署测试。然后是这样
好家伙,在本地都有问题,你敢部署到服务器上去...
搞了一会没解决。我提醒他,你平时开发建的什么项目,他说springboot,于是我让他建springboot项目,然后还知道建项目的时候选打包方式,然后顺利完成了。
一点总结:
1, 建web项目应该是开发最最基础的技能吧,项目中你可能是拉取别人建好的项目,但是需要你自己建的时候,你立马就要能建好,所以你可以不用,但是你必须会。
2,springboot项目可以打jar包直接启动,但是也还有不少公司是要把多个项目放在一个tomcat容器运行的,所以也要熟悉。
3,两个面试者在启动tomcat的时候都没有看启动日志的习惯,直到访问出问题了才想起来看日志。其实启动的时候就要监控日志,因为很多问题在启动的时候就已经暴露出来了。要么是tomcat启动失败,要么是启动没问题,但是项目有问题。日志很多的情况,你后面再来查日志也会比较麻烦。
4,java相关的技术栈非常多,有简单的也有很难的。但是,万丈高楼平地起,基础不牢地动山摇。还是要把基础的东西搞透了,再谈高深莫测的,练武不练功,到头一场空。
学无止境,让学习成为一种习惯。
本人水平有限,有不对的地方请指教,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)