一个合格的 java 实习生技能树要点到什么程度

2016-11-26 21:03:47 +08:00
 binbinyouliiii

  楼主是个 17 届专科应届生,今年大三了,同样需要出来找实习了,自认为算在班里学的还可以的,老师几乎没什么用,只能自学。
   6 月份的时候有个校招,专科学校的校招,来的企业要么是来抓你做苦力的,要么就是些跟学校或政府有关系的公司,要求都很低,我甚至见过 hr 问我的同学:“你知道 mvc 分别代表什么吗?”,同学回答完之后过两天还来了录用通知,然后苦 B 的在公司做测试(不是我贬低测试这个职业,真测试技术含量也不小,但是这些公司的测试极其没有技术含量,纯手工化测试,几乎是个懂点的人就能干)。还有某著名青岛家电企业来招测试,然后什么也不会的同学被录用去当电视测试。

  楼主那时候年幼无知,也有学校的规定的原因,然后楼主挑了几家还算靠谱的(其实招软件的一共也没几家),来了通知后又挑了一家比较“靠谱”的公司进去了,是那种跟政府关系好的然后接政府的活。
  干了几天后来觉得自己被学校卖了,工资 1500 不到(好像这是批发价,公司同样找来做测试的,技术水平和上面说的那位同学差不多的也是这个价),技术氛围很差,只能默默地自己在角落里默默学习。
  后来干了4个月,实习协议也到期了,打算辞掉去上海,也非常巧,正好赶上公司要裁人,于是我就这么被 Bang 掉了,裁掉也不是因为技术不够,也有各方面的原因。
  可是被踢掉心理总是不舒服,因为那位什么也不会的测试同学没被踢掉,自己有技术但是被踢掉了。心里有时候也安慰自己不是技术原因被踢掉的,可是总是觉得自己技术不够,想学习。看了很多 java 招聘的,看到要求需要会的很多,什么 redis , netty 的,最近学了学 redis ,基本会用了,但是一直找不到实践的地方,这就造成了死循环,想学习,但是找不到实践的地方,学不精,越不精,就越不敢找实习,怕碰到坑,所以今天想来问问找实习的话需要学到什么程度。

  现在的技能树,会 ssm 框架, ssh 框架也会,但是赶不上 ssm 框架熟悉,会简单的 redis (实践只在树莓派上用过), netty 正在看,但是确实不知道用在什么地方。
  网页方面,简单的 jquery 和 css 还是会的, linux 也会点,也有上线的网站。
14227 次点击
所在节点    Java
32 条回复
q397064399
2016-11-27 22:52:23 +08:00
@Allianzcortex
后端开发确实对 同步 IO/异步 IO 以及阻塞模型 做概念上的了解即可(因为通常 指的都是 HTTP 服务器后端业务开发),
跟服务端开发确实不是一个概念,因为绝大部分后端开发都是在成熟的框架下完成业务的编码

拿 J2EE 来讲, Servlet3.0 规范之前是没有异步的 IO ,都是阻塞,然后每一个 HTTP 请求对应一个
ServletRequest ,如果 Servlet 不返回信息,浏览器就会一直被阻塞,直到超时,而后端每一个请求对应一个线程
这样也可以简化开发,另外针对 HTTP 的无状态的特性,大大降低了程序员的心智负担,仅需要在数据库操作的 Service
层做事务跟并发同步 即可,其余的业务层 视图层都是针对单用户编写代码


Java 的反射并不是多难,理解反射的概念 有助于理解框架,要想程序逻辑清晰,得面向切面编程吧,把事务控制
日志记录 全向访问都通过 切面隔离开来,这样主线逻辑代码就会更清晰,这里就会用到 AOP


对象的管理,不能总 new 来 new 去,肯定要交给对象容器来管理,现在连 Android 都开始流行 依赖注入跟 AOP 了
直接用 @注解 +反射


而 AOP 以及依赖注入提出来比较晚,所以没有上 Gof 设计模式那本书,你看过 Head First 设计模式就知道 Java 结合反射 动态代理来实现对象的装饰


以前写 Android 是这样一个尿性


public xxxActivity extends Activity {


@Override
protected onCreate(){
xxxx;
xxxx;
findByView();
findByView();
findByView();
}

xxx = xxxObj.setOnClickListen(new onClickListen(){

})
}


现在呢?
直接注解,完事,然后交给框架去反射 装配我们的代码

@Activity(label = "@string/app_name")
@Layout(R.layout.main)
public class HelloTransfuse {

@Inject @View(R.id.textview)
TextView textView;

@Inject @Resource(R.string.hello)
String helloText;

@OnCreate
public void hello() {
textView.setText(helloText);
}
}
neoblackcap
2016-11-28 09:22:51 +08:00
@q397064399
@Allianzcortex
哦你们这样划分的啊,我还一直以为后端是 backend ,也就是不跟用户交互的都是后端。不过在学习同步,异步,堵塞,非堵塞这个时候不接触到 epoll/select 这些 API 应该是比较难的吧, CSAPP 我是没看完, UNP 里面倒是会提到 select,这些 IO 复用机制必然是会提到啊。
Java 对整体封装得比较好,但是了解一下底层的东西肯定是有加分的。毕竟公司又不是一直用 Java 。
q397064399
2016-11-28 09:51:14 +08:00
@neoblackcap 不用 Java 难道拍簧片?
q397064399
2016-11-28 09:59:09 +08:00
@neoblackcap
除开游戏行业以及嵌入式行业有特殊需求外( Java 需要在 mina netty 等 tcp 网络框架下自己玩之外
C++ C# 也有 tcp 网络框架)
目前绝大部分应用开发 无论是企业应用还是商业软件 基本上都是 http 为主流了吧,
移动 APP 基本上是 http ,自己写一套后台应用协议 估计还没上架 APP 公司就关门了
ihuotui
2016-11-28 10:39:25 +08:00
@neoblackcap 等你到了要别的语言再说吧, java 都没有学好,没有机会做别的。
neoblackcap
2016-11-28 10:56:40 +08:00
@ihuotui
@q397064399 公司业务不一样,我们这边有用 C ,有 lua ,有 Java ,有 Python 。我们组自然不用 Java ,但不代表公司不需要其他的。
neoblackcap
2016-11-28 10:59:33 +08:00
@q397064399
我们真的有用其他协议的,比如 mqtt,rtmp ,都是要基于这些东西搞研发的。还有 rpc 都是要考虑协议的,当然 rpc 就都是用其他库的了,不过我可以肯定我们用的不止 http
jclin
2016-11-28 13:24:08 +08:00
@depress 谢谢 了解了行情
teemoer
2016-11-29 00:58:44 +08:00
打广告的机会又来了 java.sx 看完 差不多 就是 java 实习生的效果了哇
teemoer
2016-11-29 00:58:55 +08:00
romennts
2016-12-13 19:35:26 +08:00
这是我看过 V2EX 回复最厉害,最赞同的一次。以至于我不得不冒泡一下
yxx278yxx
2016-12-15 18:35:27 +08:00
可以的,展望 10k 的感觉要努力了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/323529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX