昨晚看51job上面神州(我的笔记本就是神州的)招Java实习,但是要求本科以上,点进去看 ̄  ̄)σ下面有个网址和一个对应的编码第一步要去做测试题……
通过才有面试资格,我居然闲的无聊点去做了,每10题10分钟各种类型的题目,主要是一些找规律,和一些算数题大多是考验逻辑思维能力,还有给你一段文字选择下面表达的中心论点观点是什么,感觉还好,我全部口口算的计算题吃亏了,在床上躺着没题一分钟时限,还有个很变态的给你几张图猜下一张图……主要是逻辑吧!300个题花了我三小时做完。个人感觉做的还可以。真是日了狗了。老子学历不够啊,唉~估计看到大专面试机会都不给。
今天无意间在java吧中看见了一个架构师录得视屏设计模式很重要http://tieba.baidu.com/p/4842904842?pn=1.
http://tieba.baidu.com/p/4776246470?pid=97632180470&cid=0#97632180470
等有时间了,要好好的学习.
下一步我的计划,三年内成为一个架构师.
加油.我会成功的.自觉一点.被想着玩了.
老公爱红牛: 如果培训生本身学的很好,基础很牛,别说两年工作经验了,就是说5年我也不一定看得出来,但是,如果你的基础很差,确实是一眼就可以看出来。
2016-9-11 13:08回复
老公爱红牛: 有时我也会抽空去面试应聘者,我问的技术问题不会太难,都是很平常的,比如“你是怎么理解关系数据库的事务的,平时工作中你们是采用什么技术来做事务处理的,这种事务处理机制的原理是什么”,这是我最面试最常见的3发炮弹,这3个问题问出来之后,我立马可以知道这个应聘者的水平。
2016-9-11 13:10回复
老公爱红牛: 如果这三个问题答得很好的话,就算他没有工作经验,我也会很欣赏,甚至我觉得没有工作经验的人都能理解的这么好,我会觉得他潜力很棒,以后一定会成为大牛,我反而更加高看他。
2016-9-17 23:16回复
老公爱红牛: 回复 索马里的喜洋洋 :大部分求职者用银行转帐来说关系数据库事务,说着说着他们自己也犯糊涂,被圈进去了,大部分人的大概想法就是出了异常可以回滚,我觉得这种代码层面的理解是非常肤浅的,充其量也只是答出了a c i d中的原子性,当然,能够这样答出来,我也会给5分(满分10分)。
老公爱红牛: 回复 见知之障 :第二个问题,工作中采用什么技术来做事务处理,我认为这是一道比较开放的问题,可以从代码层面的编程式事务处理和类似spring框架提供的声明式事务处理两个方面来回答,编程式式事务处理就是在代码中通过jdbc的connection手动开启事务和手动提交事务,也可以使自动提交事务。声明式
2016-9-17 23:22回复
老公爱红牛: 回复 见知之障 :代理的给6分,如果能够展开说面向切面编程和动态代理的,给满分10分。
举报 | 2016-9-17 23:28回复
老公爱红牛: 回复 见知之障 :中间被吞了一条,算了,不说了,就是spring的T r a n s a c t i o n M a n a g e r是通过a o p(动 态代+ 理)关于声+明+式事 +务+处+理的控+制,能够答出T r a n s a c t i o n Ma n ag er或者a o p或者 动 +态 代 理任何一个的给5分。
一,技术。
架构师需要什么技术?是不是把java,spring,数据库,Hibernate,javascript等等一大通技术都学会了就会成为架构师呢?我想大部分人都认为把所有技术都学全了基本上就是一个架构师了,是把?其实这是不对的,举个例子,我虽然是我们公司的架构师,但是我们公司有很多一线的高级工程师技术水平很牛,甚至有几个大牛写的代码我都自叹不如。我经常向他们讨教一些技术问题,也可以说是交流吧。
那是不是说技术不好也可以成为架构师呢?显然不是,架构师的技术一定是要很好的,至少基础特别扎实,就算有什么不懂的技术,也会在很快学会并掌握。
我觉得架构师最重要的一个能力就是想象力,说的专业一点就是抽象能力,架构师拿到了一个需求之后,会很快在大脑中展现出一个系统初步的结构图,怎么根据需求来划分模块,不同的模块是在一起部署还是分布式部署,如果分布式部署又要考虑是否是垂直部署还是垂直部署+rpc,mq通信(这个得根据具体需求中来考虑);根据需求中的系统的用户群体和用户访问系统的方式,需要准备什么样的用户接入方案,pc和app端接入。预估出系统并发数量,然后决定是否采用集群方案;如果采用了集群方案,负载均衡方案也要初步给出,是否需要c d n服务,这些都要和运维部门沟通,开会决定;数据库存储方案根据数据量的大小是否采用分布式数据库存储,我们互联网企业都是需要分布式存储的,哪些是核心数据,哪些是不重要的次要数据,核心数据需要强有力的事务支持,特别是分布式事务最终一致性解决方案。如果是次要的(也就是丢失了数据也不会造成用户损失)数据,可以采用高性能的Nosql存储方案,比如MongoDB,redis等。当把这些全部梳理清晰了之后。架构师组会把系统的核心模块抽取出来,架构师牵头,配合一线高级工程师开发,核心模块是不会轻易交给下级开发人员开发的。其他次要模块交给各开发小组,每一个开发小组负责一个子模块(或者分开部署的子系统),各开发小组由小组长牵头负责,开发小组内部讨论方案,基本上就是spring+mybatis那一套了。
二,人格魅力
我前面说了,论技术,我们公司有几个开发大牛都达得到架构师的技术水平,但是架构师有一定的管理和驾驭职责,所以,架构师的人格显得特别重要了。
1,人品一定要好。我见过很多技术比较好,但是人品不行的工程师,人品不行主要体现在自大,自满,高傲,小心眼,心胸狭窄,损人利己。人品很重要,就算有人品不行的人走上了管理岗位,他的处境也不太好,毕竟口碑不好,管理不可能好的起来。我觉得一个架构师需要心胸很豁达,思维很开放,对人对事都要比较包容,不计较,不扯皮,不摆架子。当一个团队的气氛非常融洽的时候,团队工作才会取得成功。
2,沟通能力要好。架构师能力再强,如果不能有效的传播出去,那也很难。现在不是单兵作战的时代了,项目越来越大,一个人就算再强,也不可能做出什么有用的大型软件,所以,团队合作和沟通极为重要。我见过很多技术特别牛但是话都说不清楚的人,更别谈传播交流了。程序员一般都性格内向,我建议大家如果想往更高的岗位走的话,一定要提高自己的沟通能力,表达能力。多开口谈自己的想法,多写博客记录自己的想法。
3,勤奋。现在技术更新很快的,架构师也是要每日学习的,如果一个架构师不学习的话,2,3年他就会被淘汰,架构师的技术体系一定是全面的, 从计算机系统,操作系统,网络通信,tcp-ip,http,存储,设计模式,mvc思想,三层或者多层原理,分布式,大数据方案等都要深入了解,涉及到这些东西的技术都在飞快的发生改变,我读大学那会儿关系数据库是霸主地位,现在出现了很多存储方案,比如nosql,我刚参加工作的时候,rpc远程调用使用webservice,现在使用dubbo了,前几年客户端和服务器之间的长连接用轮询机制,现在用websocket了,以前写一个cs架构软件采用socket搞,mina搞,现在netty正火呢。不是说架构师水平多高就可以高枕无忧了,架构师和普通开人员一样,也是时刻不停的学习。
4,思维方式。我见过很多倔强的开发人员,他们认定了一个东西就认死了一个东西,好比说,jsp过时了,Hibernate被mybatis取代了,struts是lj,Ejb被淘汰了等待。其实我很少说这样的话,因为我觉得,任何一个东西在某一个时刻都有他的价值,不能因为又更新的东西出来我们就去否定曾经大红大紫的东西,我们需要去体会为什么他曾经那么火,而现在被取代,背后的原因是什么,新的东西提升了什么,解决了老的东西的什么问题,我们得去想,只有这样,我们才会对软件有更深刻的体会。还有,我希望所有技术人员要对技术持有敬畏的心态,当我们说Ejb是rubbish的时候,你又知道曾经Ejb给全世界软件体系带来过多大的贡献呢,创造了多少多少亿的产值呢?敬畏,我们应该对这些东西保持敬畏,去感受它,去欣赏他。
楼主好,我现在刚进入一家公司实习,我想知道怎么在公司里去学习,去提高自己的能力?
收起回复
93楼
2016-09-11 18:21
举报 |个人企业举报垃圾信息举报
来自iPhone客户端
老公爱红牛: 把你们公司现在正在做的项目的需求文件来过来看,了解项目背景,为谁做,项目的目标用户是谁,项目的用途和目标,解决什么问题。把需求全部了解之后,看一下关于这个项目的架构,模块分割方案。努力去理解每一个模块的用图和目标,以及模块间的调用接口方式。然后再具体到你目前开发的这一点模块上来。
2016-9-11 19:22回复
老公爱红牛: 看一下你所负责的这个模块,对外接口有哪一些,哪一些是客户端的接口,哪一些是其他模块的依赖接口,你这个模块又依赖了哪些模块。你这个模块的领域模型是怎么样的,对应的数据库结构是怎么样的,全部摸清楚。
2016-9-11 19:24回复
老公爱红牛: 然后对照着需求文件和详细设计说明书,把你们这个模块的所有源码看一遍,了解你这个模块代码层实现方式。在看源码的过程中把可能需要改进的或者有问题的地方做个记录,等时机成熟了向小组长或者项目经理报告,提出问题(表现自己嘛)。
2016-9-11 19:27回复
老公爱红牛: 要成长麽,依我说的去做,你一定成长的很快。
2016-9-11 19:28回复
风之i: 回复 老公爱红牛 :非常感谢
,就是多看源码对吧
老公爱红牛: 我在学习maven的时候,用的是maven实战那本书,貌似是国人写的,写得很不错。mybatis的官方手册已经够好了。springmvc的话,网上有一个叫做张开涛的人,此人的springmvc系列教程相当棒,我看过,你可以去学一下。
2016-9-11 19:46回复
38KG进行时: 回复 老公爱红牛 :楼主你好,maven我只会用来建工程,导jar包,请问工作中还要用maven来干嘛啊?
2016-9-19 08:47回复
老公爱红牛: 回复 38KG进行时 :我认为maven很重要!我认为现阶段没有使用maven的新开发的项目不可能是大型的重量级项目,所有还不懂maven的人一定要去学习maven!
2016-9-19 10:28回复
老公爱红牛: 回复 38KG进行时 :maven不仅仅是用来导入jar包,maven是一个项目构建工具,可以帮你管理,构建,发布项目,并且是全自动化的,maven的多模块非常强大,强大到让你嘴巴张成O型,你去看看spring什么core,web,bean,context等等一大堆子项目,都是用
2016-9-19 10:33回复
老公爱红牛: 回复 38KG进行时 :maven来做的,多模块的测试编译和发布打包部署全部一键反应堆式完成,爽的不要不要的,再也不用去关心先编译哪个模块,后编译哪个模块,谁依赖谁,通通maven自动搞定!
2016-9-19 10:37回复
老公爱红牛: 没有maven的时候,大概是用ant来构建项目,不过ant现在用来越来越少了,maven真的是在各个方面完爆ant,现在几乎大一点的项目都在用maven!特别是和hudson,svn进行配合做项目持续集成,真的会让你嘴巴张成一个大写的O,简直是不可思议,会颠覆你对项目构建的认识!
2016-9-19 10:41回复
38KG进行时: 回复 老公爱红牛 :嗯嗯,好的,太感谢楼主了。说的好详细,感觉我平时完全是埋没了maven
老公爱红牛: 你这是典型的 小猴子下山思维,看到了玉米丢了芝麻,看到西瓜丢了玉米,看到兔子丢了西瓜,最后兔子也没抓到,什么也没有。你说得代码没什么技术含量我不赞同,我现在写了9年代码(大学4年),我都觉得我的代码写的还不够好,我一直都在尝试提高自己的代码质量,学习优秀的源代码,看一些关于代码
举报 | 2016-9-12 17:55回复
老公爱红牛: 优化方面的书,比如《代码大全》,《重构》spring源代码等。所以,你需要沉下来真的当一个优秀的程序员,不要漂浮表面,会了一招两式就感觉会了一切。能够提高的地方多的是,去把《重构》这本书看看吧,你会有不一样的感受的。
2016-9-12 17:57回复
love758458195: 回复 老公爱红牛 :我也是一直在努力提高自己的代码质量,减少垃圾代码,<重构>我会找来看的