纠结了N久总结的:Java之高效编程

JAVA高效编程的一些总结,我纠结了很久,总结再总结出以下四点。

  1. 命令行才是最方便的,图形界面只是面向初级用户的。代码才是我们的好朋友!图形界面用多了会脑残……(只针对专业人员……)
  2. 如果好多函数里都用了同一段代码,可以吧这段代码写成一个类(是否为静态类看具体情况,静态类会更加节省系统资源!),然后继承之~

 3. web工程里,如果每个页面都对应一个servlet的话,不仅会使编写麻烦,而且不利后期的管理维护。利用多重映射的方法,将一个servlet映射到多个url,每个页面的处理对应一个url,这样会解决上述问题。如:一个servlet映射到了两个url:/user/register.do和/user/login.do,在web.xml中的配置对应为:

  <servlet-mapping>

    <servlet-name>UserServlet</servlet-name>

    <url-pattern>/user/register.do</url-pattern>

    <url-pattern>/user/login.do</url-pattern>

  </servlet-mapping>

在假设在register.jsp页面里:<form method=”post” action=”/user/register.do>…</form>声明了表单动作(action)的url

同理,在另一个login.jsp页面中可能会有<form method=”post” action=”/user/login.do”>…</form>

那么,在servlet端就可以写成:

if (request.getRequestURI().endsWith(“/user/register.do”)) {

    doRegister(request, resopnse);    //doRegister(request, response)是自定义的函数

} else if (request.getRequestURI().endsWith(“/user/login.do”)) {

       doLogin(request, response);        //同上

}

那么提交register.jsp的表单时就会执行doRegister(requset.response)方法,提交login.jsp的表单时,你知道了的……

这样,实现了多个页面的操作整合到一个servlet的功能。

4. 类名用首字母大写,函数名一般用小写,目录名、文件名用小写,取名尽量简洁。这些细节涉及后续的管理维护,十分重要~(文/Zeqi)转载请注明出处http://mtoou.info/jiava-gaoxiao/

手机不支持java照样安装自己需要的软件,如手机QQ等

      上周帮人去手机市场买了如上描述的仿诺基亚的3G山寨手机,买了两个,每台220,女人买手机只看外表,其次图实惠,虽然我再三说这款不支持java,无法自定义安装手机软件,扩展功能有限,人家还是买了。——买完后,人家又想装软件了——我没听错吧,不支持java还想装软件!?但乔哥的英雄神武的形象还必须在异性面前得以维持,说没解决方案多丢人,以后别混了——找块豆腐撞死得了!得,我试着化腐朽为神奇吧!所以,我要研究下不支持java 的 function phone 如何安装自己所需要的软件;反正smart phone玩腻了,PSP压箱底了,5寸屏的笔记本也半年没摸了,刚买的Android平板也研究透了,总得找点事情干吧。经过一番折腾,发现——真的可以有,这个真的有!到底怎么有?请您先别走!我明天早上要赶火车,先睡了,以后有空再补教程吧。一句话:轧干山寨机的最后一滴血,挖掘它的最后一分潜力!让java见鬼去吧!
      直接安装java很难,除了手机硬件支持外,还需要刷新固件,如果我有那能力,也就可以当程序员赚钱了。同时,如果java可随意破解,那么中端支持java的手机也就没得卖了,因此厂商为了把手机强行拉档次,其硬件屏蔽和固件加密也是比较复杂的。这里其实用的是取得系统的管理权限,安装mrp软件,mrp是杭州思凯为MTK平台CPU提出的一种手机内置软件解决方案,其效果和java不相上下,为了方便山寨厂商定制软件,思凯预留了接口。所以只要把这接口找出并破解即可随意安装手机没有的mrp软件了,譬如最新版的qq2011,飞信,msn,ucweb,以及一些小游戏小工具等。目前市场新售的山寨机的80%用得都是MTK的CPU,并采用了思凯的mrp软件,因此这方案有一定普适性。等闲下来再些教程吧,比较繁琐,呵呵。如果没空,也就不更新了——感觉关注的人并不多。文/乔

一位西安交通大学计算机硕士的求职总结

上周终于把三方寄出去了,从去年9月开始找工作,现在终于算是告一段落。借着放假的机会,整理下自己找工作的历程,也算是一些心得体会。希望对下一届的找工作的同学有所帮助。也给一个月后的答辩攒RP吧。
本人软件本科、计算机硕士,最后签约公司:morgan stanley。在求职开始,考虑到除专业之外,自己没有其它兴趣或者特长,因此给自己的求职定位就是IT企业的研发岗。因此,我的找工作历程基本分为 IT民企和IT外企,也穿插了在体制内单位打了几次酱油。下面主要回忆面试过程中问到的问题,有些时间太久不太记得了。

IT民企部分

  1. 华为云计算(offer)。华为招聘分为一面,二面,机试。一面问的是以技术为主,写了两个程序,第一个是shell排序,第二个是就餐者离席次序(每次数到第七个人离席),都很简单。二面时间很短,大概五分钟,就是问问为什么选择华为,对云计算有什么了解。虚拟化(我个人简历上的研究方向)和云计算关系,愿意不愿意去深圳等。机试就是常规性格测试。
  2. 腾讯无线(offer)。,招聘分为笔试,一面,二面,HR面。笔试考察的主要是基本的数据结构和c语言。一面考察基本功, 抽象类和接口区别,多态,多线程实现方式,linux socket建立过程,JAVA同步和linux中的线程同步机制,写快排程序,分析复杂度。二面考察的是解决问题能力,问了一些实际项目中遇到问题如何解决,最后问了一道大规模数据处理问题。进入HR面基本是拿到offer,也会问一些问题,工作地点倾向,性格特点等。腾讯是我第一个签约的单位,不过它家办事很规范,违约办理很快。
  3. 百度系统部(一面后无下文)。投百度职位的时候,在商务搜索和系统部之间纠结了很久,最后因为个人背景原因选择系统部。百度效率很高,笔试完不久就立即发面试通知,系统部就参加了一面,因为职位关系,我准备了很多内核以及虚拟化相关的内容,但是面试让我大跌眼镜,问的全是JAVA知识,让我措手不及。一面过后无下文,后来证实投系统部的都面了一面没有下文,不知是个人问题还是走形式。
  4. 淘宝(offer)。淘宝招聘分为笔试,一面,二面,三面,HR面。没有参加笔试,霸王面。一面面试官对虚拟化感兴趣,一直在问项目,二面面试官直接写程序,一个8*8方格不同颜色填充,找出相同颜色块的最大区域个数。然后写一个huffman的建树过程。三面面试官问了一些内核知识,然后让设计一种读写锁,问了一个赌徒赌钱的博弈问题。HR面基本就直接告诉拿到offer,然后谈薪资。淘宝这两年进去是个机会,因为还没有上市,所以承诺有期权。待遇上也是根据面试表现分等级。
  5. 创新工厂(二面杯具)。在教2-100被HR MM的演讲忽悠着投了创新工厂,第二天就参加笔试,创新工厂的笔试和面试很多重复。一面先问项目,然后让写程序,第一个程序和淘宝那个找最大色块数类似,第二个程序是随机发牌程序。二面问题不太记得了,因为在西电阴冷又破的教室,和同学去的时候就想回来了,据其它同学面试,KMP算法写的最多。创新工厂招人很少,而且待遇没有竞争力。
  6. 中国银联(offer)。典型的国企,没有笔试,面试就一轮,只需时间最多10分钟。问问做的项目,遇到四面困难等,薪资期望等,就结束了。

IT外企部分

外企开始的都比较晚,今年外企普遍回暖,所以多了不少的机会。

  1. Marvell APSE(offer) marvell 没有面试,也是三轮面试,在面试之前,根本不了解这个公司,因为第一天投简历,第二天早上去面试,很仓促,在面试路上问舍友,是什么部门,汗一个。第一轮面试,主要问了c++的一些问题,都很常规,写了一个c++的多态程序,然后让编写一个程序,实现屏幕自动显示字体调整大小的程序。二面面试官主要问项目,问了一些driver开发的问题,内核模块如何写,DMA传输等。然后让举一些编译优化选项解释,我列举了 packed,voilate 等。三面不问技术,以英文交流为主,问自己的兴趣爱好,求职意向和薪资需求等介绍公司和部门。Marvell的offer是周围同学中收到最晚的。
  2. Microstrategy (止步二面)。微策略分为笔试,面试,AC。笔试5道题,基本覆盖了算法,语言,基本数学,智力题。西安的面试分为2轮,面试细节很好,每一轮面试前,前台的HR会给面试官打电话,然后面试官下来接你去面试。这也是我第一家参加全英文面试的公司。微策略不会考察背景,直接就写程序,一面:在数组中快速找出两个和为2010的数,找出数组中唯一重复的数等。二面:第一个是全排列程序,第二个问题是100层楼,一个球,球在第N层掉下来完好,N+1层会碎。求 N。测试次数尽可能小。这家公司因为突然全英文面试,准备不充分,是失败原因之一。待遇很好,浙大同学称之为米缸。
  3. IBM  Z-system (offer )。 IBM 没有笔试,面试两轮,后来我又接到了一轮电面。第一轮面试写程序,写过一个单链表逆置,写了一个利用栈实现队列功能。再问了一些语言知识和设计模式,具体不记得。二面以内核为主,问了Linux内存管理知识,然后问了虚拟化技术和VT技术,还有项目。电面过程不记得,问的都比较基础,和前面面试也有重复。
  4. Intel (offer)。职位是二进制翻译组,去上海AC。第一面依旧是排序算法,项目,二面是自己写一个内存分配算法,考虑编译优化。三面问体系结构,然后让设计一种BT翻译模型。四面就是manager,介绍下职位,主要是你问他。Intel 报销效率超快,去的时候给HR发票清单,走的时候HR就会把报销好的信封交给你)
  5. EMC (offer)。这是一家感觉最遗憾和对不住的公司。EMC笔试很晚,11月6号笔试,感觉考得很不理想,所以没去想了,后来面试官告诉我EMC主要是笔试刷人的,60分客观题的线是18分。面试分为3轮,每轮半个小时,一面面试官以项目为主,问内核,虚拟化。二面面试官技术问的很细致,写了好几个程序,二叉树遍历,哈希算法设计,还有不记得了,三面面试官回归一面形势,比较泛,据三面面试官说,主要是笔试刷人,面试主要在我参加的二面面试官那边。面试当晚就收到offer。拿到offer后,和美国一个架构师又面试了一下,那个组主要是bios,firmware的开发,底层问的比较多。EMC近期很火,存储很热,加上vmware,未来发展应该相当不错,并且提供的福利待遇在外企中也是很好的。
  6. 微软(SDET offer)。微软对我来说是意外。面试百度时接到微软笔试通知,因为没有西安考点就没有考虑,但是微软的HR很负责,后来打电话确认成绩为什么为0的时候,我极力争取了一次远程面试机会,问了一些基本问题,判断链表环,哈希算法,然后问一组连续数字数组某一数字异常,如何检测。然后拿到AC机会,和 intel面对面在闵行,很偏僻,持续一天,全英文。这一家面试我大部分时间站在黑板前,因为要不断的写程序,一面:第一个设计一个数据结构和算法遍历保存STL的层级结构,二面:自己提出需求设计一种扩展功能的队列,比如扩展三个功能,复杂度尽可能低,三面,二叉树共同父节点查到,设计一个运行时代码解释框架。这个div开发组最后还是没有给我机会,回来后意外收到另外一个组的测试职位电面。最终放弃。
  7. Morgan Stanley (offer) 找工作的结束点。Morgan 也是意外,笔试当天因为签约腾讯,错过,但是后来同学推荐,通过推荐流程第二批进去。过程也是最长最痛苦的,分为电面,coding test,AC,全部全英文。Intel面试回来下午,电面,问的都是语言问题,以JAVA为主,然后做coding test,限定24小时交,熬夜5点赶完发过去,早上八点起来参加EMC面试,下午2点在做coding test的review,是个老外,问自己如何分析,如何做的,特别问了我一个正则表达式(超长)如何写的。然后上海AC,早上7点40到,分为一面,二面,三面,群面,继续笔试,follw up 面试。一面写程序依然是快排,介绍项目,问了一些语言,二面我超时了(HR过来提醒面试官2次时间到),不记得面试官问了什么,但是后来进来一个香港人,一直问我,设计一个系统,如何做,给我描述一个场景,指出有什么缺陷,如何改进等。三面,主要问的问题是设计一个算法,保证数据读写不等待。群面就是小组讨论,第一次参加群面,题目是如何促进morgan和高效学生之间最大的沟通。在公司吃完午饭,接着做了一个笔试题,然后我又被留下follow up面试,问的主要是数据库设计问题,问了一个电梯设计算法。面试结束已经下午4点。

酱油类

南京841研究所,中物院计算技术研究所。本身对这些单位没有太大兴趣,所以就不说了,面试内容也没有参考价值。

罗里罗嗦写了一堆,总结下来,对于计算机类找工作,我觉得主要有以下几个方面。

  1. 基础。交大的学生,基础还是都很扎实的,所以这些不是基本问题,这些依赖于平时个人的积累,在找工作的时候就会发挥出来的。
  2. 准备。不管基础怎么样,准备同等重要。从专业角度来说,计算机准备无非是三个方面:语言,数据结构算法,系统。语言你可以准备你最熟悉和擅长的,基本数据结构(二叉树,链表是重点),排序,查找,哈希,红黑树,常用算法KMP,归并,动态规划,回溯,简单数论知识等。系统可以是系统编程,内核等,因人而异。推荐清华的算法分析与设计,算法导论,编程之美,程序员面试宝典。准备还要包括简历,随时关注招聘信息,应届生网站和国内其他高校的bbs都是不错的途径。
  3. 争取。很多机会是自己争取的,尤其是自己错过一些机会的时候,如果我没有在HR给我打电话时解释原因并且争取的话,我是去不了微软面试的。在面试过程中,多和面试官交流,适当情况下可以索要联系方式,获得事情有转机的时候,尽量争取。
  4. 总结。找工作是个体验新鲜的同时积累的过程,面试多了,你会发现以前你被面试问题又被问到,所以面试完的总结很重要,尤其是你没有解决好的面试问题。
  5. 自信并且注意细节。细节很重要,我在做morgan coding test的时候,用的是JAVA,但是我简历写的是精通c++ 熟悉 java,后来面试官告诉我,他们甚至会怀疑这个是不是你做的,如果这个被放大了,或许就会错过了。

祝愿今年找工作的同学找工作顺利!