男,95年,这个学期就大四了,非计算机专业(数字媒体)。目前在二线城市作Java实习生,待遇通常,应该算一个正常的实习生水平吧:租的一个约10平米的小单间,实习工资-衣食住行-杂七杂八的小消费差很少结余100块左右,通常般,勉勉强强能养活本身。前端
技术的基础大概是这样,从去年4月开始学JavaWeb技术,从jsp开始一直学到Spring MVC、Mybatis这样的技术栈,中间作了几个小项目(CMS、管理系统等)。从去年10月开始转作Android了,水平也就是四大组件+蓝牙/NDK+一些库的技术以及稍微了解了一些什么事件机制、OOM优化。嗯,这样随手列出来感受本身水平通常般,就是能作一些J2EE和Android项目的水平。java
由于从 去年10月~出校门的7月 这一段时间一直在作Android开发,我本身也一度认为我出来后也只是作Android开发的,因此投了不少Android的简历,简历上除了写Android的技术,还写了一大堆的Web开发中的Spring、Mybatis上去,项目经验也是臃肿的不行,2个Web,2个Android的,看上去内容挺多的,可是两个方面的开发都不突出,因而我就想了一个策略,分简历,作一份Java简历,作一份Android简历。二者各突出其重心,投简历的时候分别投不一样的岗位。大概效果能够看下面区别linux
熟练Java开发,良好的代码风格以及IOC/DI、AOP、OOP、高内聚、低耦合等编程思想与设计模式web
掌握Tomcat/Apache/Nginx等服务器的基本配置与使用。面试
掌握Spring/MyBatis/Hibernate/Spring MVC等主流后端开发框架,具有相关经验spring
熟悉MySQL、SqlServer、SQLite等关系型数据库的使用,熟练编写SQL语句,了解Redis缓存技术sql
掌握微信公众号开发技术,XML与JSON的解析技术,OAuth2.0技术等shell
掌握Android App开发技术数据库
掌握HTML5/CSS3/JavaScript/jQuery等前端技术,可以编写PC/移动/响应式页面编程
掌握Linux的使用与经常使用shell脚本的编写,掌握Gradle、Maven、Git等工具使用
熟练Java开发,良好的代码风格以及IOC/DI、AOP、OOP、高内聚、低耦合等编程思想与设计模式
熟练Android的四大组件、经常使用与第三方UI控件与布局的使用、了解View机制与自定义控件
了解Android IPC机制、图片缓存、NDK技术、OpenGL es、蓝牙开发技术
熟悉Android SDK的开发,了解xUtils、GreenDao、OkHttp等第三方框架的使用
掌握Spring等Java后台开发框架的使用,与Tomcat服务器的配置
熟悉MySQL、SQLite等关系型数据库的使用,熟练编写SQL语句
掌握微信公众号开发技术,XML与JSON的解析技术,Webservice、OAuth2.0技术等
掌握HTML5/CSS3/JavaScript/jQuery等前端技术,可以编写PC/移动/响应式页面
掌握Linux的使用与经常使用shell脚本的编写,掌握Gradle、Maven、Git等工具使用
由于在某三四线城市,当地互联网产业不是很发达,准备去网上投递一些二线城市的公司的简历,我试过的工具备5一、智联、拉勾、BOSS直聘。前两个不是纯IT招聘的,上面投的所有没消息了;拉勾上投的比较多,可是最后能够说99%的简历直接被拒绝了,BOSS直聘上面的比较多,性质不一样,这里比较推荐的是后面两个。
入职后,发现拉勾上的简历实在是太多了,对于“Java实习生”这个岗位来讲,天天HR都能转3~8份简历到技术经理这边,日常工做时间都在敲代码,没时间看,通常都是下班前或者吃饭的时候看几个,不经过的也不和一个个的去跟HR反馈,就丢到邮箱里,因此反馈的速度比较慢的,但通常来讲投了简历以后过了一周还没动静的就表明没什么但愿了。
BOSS直聘这边聊天的人大可能是HR,因此聊技术问题是没有用的,因此大多数都是随便聊一下,而后要简历,给技术VP看看,若是能够的话就安排你的面试时间。
作个比较来讲:拉勾的一整套机制很符合公司的招聘流程,在互联网行业也是比较知名的,竞争比较大,安排面试的概率比较低。BOSS直聘这边由于招聘是经过聊天进行的,简历表现的东西有限,经过聊天的方式能快速了解一些我的经历方面的东西,还不错。另一些大一些的公司本身公司网站上也有招聘入口也能够关注一下。
坐了通宵的火车从学校来到这个城市后,刚到的第一天下午就有一个Android面试,舟车劳顿的我一夜不只没睡,并且不敢睡,临时安置在学长家,而后急急忙忙的搜面试资料,毕竟是第一次面试,搜资料的过程当中都睡着了1次,而后中午随便找了一家店吃了点东西就去面试了。HR先拿了一张我的信息表给我填,而后找了个技术人员给我面试,记录大概以下:
一、你的项目里用到了SlidingMenu,这个Acitivity是普通的Activity吗?
不是,用的是它封装好了的Activity
二、简单的说一下你知道的设计模式
单例、builder、责任链、观察者、工厂……反正一大堆,看了一本设计模式的书,几十种想不起来了
三、那你说一下Builder模式的最普遍的应用
固然是生成对话框啦
四、Builder模式的链式有什么优势
代码更加优雅
五、除了优雅呢,还有什么优势?
呃。。。(没答上来,应该是根据实际的需求能够builder执行不一样的方法,更加灵活。好比说生成的对话框有几个按钮,这些都很好控制的。虽然能理解这个,可是没有答上来)
六、同一个Acitivity中Fragment之间如何进行通讯,Fragment何时执行getAcitivity会空指针
fragment我在项目里面都是操做同一个service,没有通讯过,要我想的话应该能够先从碎片传到activity中,再传到碎片中去;第二种方法应该是能够用AIDL实现的(面试官:通常不这么弄)。
七、简单说一下你知道的有几种BlockQueue以及他们的特色
不知道(我只用过BlockQueue这个类,其余的子类没用过)
八、说一下线程池把
不知道(回去立马学了一遍)
九、说一下Android中的IOC把
是在说注解式把,我通常不用的,用注解开发下降Android运行效率,服务器端开发通常就不须要考虑这个问题
十、为何用注解会下降效率
由于涉及到类的加载器与反射……效率比较低
十一、有没有注解是不下降效率的?
ButterKnife的注解是在编译的时候生成Java文件,仅在编译时需执行,执行后就和普通代码同样了
十二、OOM的解决方案?
用更小的图片、压缩图片、使用LruCache、回收。(这个答的特别烂)
水平有限,只能回答成这个样子,他问的问题也是按照我简历写的以及他们公司的项目问的,可能有些也答错了,不过半个小时的聊天和答问仍是挺愉快的,技术面试应该算是经过了吧。而后HR来谈待遇,我报了个我如今(写这个文章的时候)实习的工资,她以为有点高,说他们这边招实习生通常是给3500左右的,不过刚刚面试的人说我技术很成熟,而后要我回去听消息,他们还要对去他们公司的其余实习生面试,对比一下再决定。这是在BOSS直聘上投的,总体感受还好,可是最后并无要我:)。
面试这家后出门没几分钟就收到另一家的面试电话,通知我明天上午11点到公司面试,嗯,对,此次又是Java岗位,面试完后,又回学长家开始搜Java面试题(虽然次日一个都没问到),通宵的站票加上处处跑,实在是太困了,6点钟就睡了。次日算好时间出发去面试,有点远,要1个多小时,结果我坐公交车坐反了!!坐反了!!坐反了!!我就说怎么就到终点站了?!!眼看着就赶不上面试了,我掏出了现代文明利器——滴滴打车,而后40分钟跨了2个区就到了。
第二次面试底气足了一点,先去作了一套Java选择题,30道,主要考的是Java 基础部分(多线程、IO、static、计算、集合、泛型)的,以及Hibernate、Spring等框架,大概弄清楚了公司用的技术,而后就开始面试了,先告诉我这笔试题错了5个,还不错。(入职以后发现不少别的来面试的错一大半,20的大有人在,我应该是得益于考了一个Oracle的Java证吧,虽然没什么用,可是的的确确是把Java基础给弄的挺牢固的)后面正式开始面试,结果由于我已经大半年没作JavaWeb开发了,一直在作Android开发,面试官要我举几个开发中碰到的难点问题,我竟然一个Web开发的难点都没想起来!!光想着Android开发中碰到的NDK驱动编程与修改安卓系统触摸屏的c代码了……,硬着头皮的和面试官说了一下Android开发中的难点以及一次碰到的金融信用评分系统的软件结构设计问题,而后机智的加了一句
无论是Android开发仍是Java开发,虽然他们是不一样方向的开发,可是我以为本质上都是编程的逻辑和业务思惟在不一样程序中的不一样体现而已。
虽然公司用的Hibernate和Struts我都没学过,可是我会Spring MVC和Mybatis,有了这种编程思惟从其余框架转用hibernate这些也是很快的。编程最重要的其实也不是这些框架,而是编程的逻辑和思想。
(说的好乱,乱到我本身都不知道我想表达的东西表达出来了没有)
虽然比第一次面试有底气,可是此次10分钟左右就结束了,感受表现的没上一次的好,而后HR来和我谈待遇,说了一下个人学习经历和项目经历,而后我就把个人“创业”经历拿出来“吹”,而后说了一下本身申请到的创业基金和项目资金什么的,而后按着招聘启事上的报价说了一个价,也是感受HR以为我报的略高,但仍是说要我回去等,一周内出结果。送我走的时候我,她忽然问我要不要先参观一下公司?WHAT??这表明是要了我嘛?虽然心里很激动,可是强行装做很淡定的样子。而后我把公司三层楼参观了个遍,而后我就回来了。
那天很高兴,可是担忧是否是由于报价过高了。而后问了一下群里学长,二线城市的实习工资大概什么水平?群里的学长一报价,我就以为果真是我报价报高了……但是真的很想进今天面试公司,晚上很忐忑,想着次日和HR询问状况提一降低个500的报价什么的,真的很但愿能进那个公司。而后次日我还再纠结投下家的简历是哪一家的时候HR就直接打电话给我说我经过了……
公司用的开发环境是Ubuntu,嗯,做为一个学习Adobe全家桶的多媒体设计类的专业来讲,表示根本用不习惯啊,第一天勉勉强强学了一下什么apt-get之类的命令,把STS\Tomcat\MySQL之类的软件都安装好了,次日丢了个SSH项目给我,而后花了三天的时间把struts、Hibernate学好了,由于有基础学起来还挺快,(偷偷看imooc的视频学的,用了x2的速度)并把项目看的差很少了,这是一个小项目,大概也就8张表的大小。
第一周就这么过了,而后第二周跟我说了有好多个优化的地方要我优化一下,而后我就一个个模块的改,还有好几个SQL的优化,这个项目虽然不大,但数据量是百万级别的,而后我就打开show_sql慢慢读,发现还真有不少能够优化的地方,而后就把leader提出的问题所有弄好了。嗯,半个月的时间就这样过了,很快,也就两个星期。
第三周就安排了我和PM联系开发一个新的模块,而后给我预估2周的时间开发完,而后我就开始设计程序的流程,和PM肯定好了以后,差很少3天就开发完了,就跑去和PM交付,结果测试了一下,使用这个系统的人以为有些功能设计的很差,要变,而后就又变了需求,就开始新的需求的开发。
第四周这个功能就发布投入使用了。这个一周又接了一个微信扫码对接的接口功能,而后我又开发了2天弄好了。这个系统基本上就比以前要优化很多了。leader看安排给个人项目都作的ok,就拿公司对外的一个项目给我看,拿到SVN后,一看项目我傻眼了,我用搜索统计了一下java文件900+,数据库的表格200+张。先随便看了一下,发现看不懂,而后去看web.xml,根本就没有熟悉的spring的dispacherservlet,用了一个什么见都没见过,搜也搜不到的框架(后来阅读代码发现这个框架竟然是公司本身基于Spring写的),而后硬着头皮看xml文件一点一点的看业务逻辑,最后终于看通了。
而后开始让我写一个给Ajax的接口,熟练后差很少1天就写好了,而后次日和前端一块儿调试,又接了一个Ajax接口,而后第三天写接口,也写的很快,而后继续和前端调试,嗯感受很顺利的时候就是出问题的时候,上线后的系统不正常了,由于前端写了一个input,可是没有赋值!由于这个值是后端赋的,而后我不知道应该是我来作的,上线后的系统表单不能提交,由于那个值没有获取到。产品、前端、leader都急的不行,而后我急急忙忙的fix后,新的接口和之前的一个接口在使用的时候又有Bug了,致使页面上什么数据都不显示……而后一行人又的去找问题,发现是另一个系统的前端的问题。反正就是这类大型网站涉及到多个系统的对接,我刚入职还不了解这些接口分别对应的是什么系统,因此出了Bug,急急忙忙的一周的最后一天就这样结束了……
新人入职难免被批评,虽然不肯意听,但仍是要接受,leader批评的再多,也是为我好,为项目好,整理以下:
1. 在linux环境下,你必需要会用vim,不要用那个什么geditor
2. 代码缩进要对齐、对齐,等号先后的空格也很重要,你这样谁看到都烦
3. 注释要简单明了,你这注释本身读一遍试试?
4. commit代码前要检查,每个修改的地方再看一下,show_sql这种代码还要提交到线上的服务器的吗?!
5. 获取到的值要先本身判断空指针,再使用
6. 开发使用debug模式,不要用什么start server
1. 公司里的项目比在学校作的要复杂的多的多的多,学校里最多作5~8张表的项目,这里这个200个表的涉及到的业务比较宽,可是细细读下来仍是能理解的,大项目和小项目都是由一个个板块堆积起来的,更多的是要一颗能静下来的心
2. IT行业加班是常态,但在我在的公司感受氛围不是很明显,6点就能够走,可是我通常是10点回去的,毕竟没有必要回去那么早。前几周是为了加班补充知识缺陷,后几周稳定下来了就用晚上的时间作作毕业设计了,作完后就好好按15k的标准补充本身知识点
3. 出来以前觉得JavaWeb就是ssh或ssm的框架写一些业务逻辑,如今看本身的知识短板真的不少。并且了解到知乎上有不少应届生把 Spring 源码什么的都弄的特别熟,而我只了解Spring的特性和API的调用,任重而道远
4. 在学校我这个非计算机专业其实我技术还算是挺好的,但在公司,不只每一个人的技术都比我好,并且其余的实习生仍是纯种的软件工程或计算机专业的,Linux用的比我熟,并且专精JavaWeb开发,不像我野生生长还去学移动端和前端开发,虽然并无坏处,可是应届生专精一块能找到更好的工做
5. 在公司低调作事,认真完成手头工做,能力范围内帮助他人
6. 人与人的差异,在八小时以外
7. 两年内不理财,用于我的提高
8. 入行后锻炼身体很重要
9. 保持长期的学习心态