程序员面试指南

1 篇文章 0 订阅
1 篇文章 0 订阅
程序狗狗们新年好!值此新旧交替之际,你们准备好跳槽了吗?每年春节前后两月,程序狗狗们都像雨季来临时池塘里的青蛙,跳来跳去,好不欢腾。各软件公司也纷纷开启补血模式,大量招人以弥补各岗位空缺。一时间你要跳我要招,人才市场供求两旺,形势十分喜人。老狗近日来就为公司面试了不下几十号狗狗,面的多了竟不由得一声长叹:“这槽跳的也太没技术含量了!要知道每次跳槽都是提升自己的机会,能不慎重对待乎?跳槽姿势能不兼具观赏性和技术性乎?就算跳不出奥运会十米跳台的水平,起码要有点国际标准舞的感觉是不是?就你们这‘探戈揍四趟着趟着走’的姿势,岂不是对自己的严重不负责嘛。”

老狗不是一个忠于企业的人,多年来一直在跳来跳去,被面的多,面别人也多。结合这段时间当面试官的经历,特别想将自己的面试经验分享给大家,如果能帮助一两个狗狗谋到期望的工作,那功德岂不大哉。

拿程序员的面试来说,面试中首先要考核到的,还是语言的语法基础。有狗狗要不以为然了:“语法基础太小儿科了吧,又不是大学的C语言考试。变量类型记不清又怎样,一点不耽误我写程序!”你说的没错,变量类型、控制语句这些确实不能靠死记硬背的。现在又有那么多功能强大的IDE帮助我们记忆语法,对这些基本语法元素的记忆在工作中显得并不那么重要了。但是话说回来,面试需要一个用可衡量的标准来量化你的技术水平,这些语法基础知识就是一个很好的衡量标准。

又有狗狗说:“我面过的一些很屌的公司根本就不问这些,他们只要了解我做过哪些项目,担当过什么职位。”确实有这样的公司,老狗自己就碰到过好些,也在这样的公司干过。以老狗我的经验来说,这样的公司,要么是自身技术能力不强,很容易被你忽悠住,要么就是不重视技术,是那种靠忽悠概念赚钱的公司。恕我直言,这些类型的公司都不是可长久立身之地,除非你本人就是那种忽悠能力远高于技术水平的人。

回过头来说语法基础,面试中一般会考核到哪些语法基础呢?其实并不会考你些刁钻古怪的问题,比如老狗我就喜欢考这个“请列举一下Java的8种基本数据类型”,然后惬意的看着刚才还在吹嘘做过多少大项目的面试者支支吾吾,面红耳赤。这真是我这个中年猥琐变态程序狗一天中最满足的时刻啊!万一有聪明的狗狗没被难住,老狗后面还有个坑等着他“int类型占用内存几个字节”,大多数狗狗在这都会认栽。当然老狗不会问“int类型存储的范围是多少,请精确到个位”,这种问题过于变态了,容易被面试者暴打。

当然面试官不会满足于这一两个简单的问题,语法基础中还有以下知识点是面试官们常考到的:

1. 类型转换,一般是String转其它类型或其它类型转String,牢记String.valueOf()和parseInt()、parseLong()、parse...等等足够应付了;

2. 流程控制语句中容易考到while和do..while的区别,for语句和foreach语句;

3. 数组中有可能考到冒泡排序算法和直接插入排序算法;

4. 字符串一般会考到日期和时间的格式化;

5. 面向对象理论的知识点很多,主要关注类的多重继承(注意Java类不能多重继承,C++程序员出身的面试官爱考这个,彰显他们对身份的优越感),内部类(Java程序员出身的面试官爱考这个,理由同C++程序员),接口的作用等等;

6. 集合类,一般会考到List和Set的区别,List和Set的实现类(LinkedList、HashSet等等);

7. 异常,会考到检查异常和非检查异常的概念,屌一点的公司会考到异常处理的原则,请参考拙作《异常处理的原则》

以上是面试中常见的语法基础的知识点,建议众狗狗,至少在面试前抱一本《Java宝典》之类的书,把以上相关章节复习一遍。一点准备都没有就想拿下8000到10000的高薪,你当软件公司都是做慈善的吗?

另外面试中还有一个必考到的,就是数据库,一般以Oracle数据库的考点居多,现在云平台那么流行,考hbase的也不少。hbase老狗也不熟悉,万一考到各位就自求多福吧。Oracle的知识点一般是以下这些:

1. 函数:convert、cast、decode这几个函数问的比较多,最常用嘛;

2. SQL:面试官们喜欢文关于连接的问题,外连接、内连接、左外连接和右外连接的区别要分清。SQL优化也是常见的知识点,因此利用索引、in和exists效率的高低这些要搞清楚;

3. 游标:显式游标和隐式游标一定要搞清楚,老狗我就喜欢拿这类问题为难小狗狗们;

4. 存储过程和触发器:要清楚在更新、插入、删除触发器中如何操作更新前、更新后、将插入、将删除的数据;

5. 事务:分清楚表级锁定、记录级锁定和字段级锁定;

6. 分区表:这是一定会考到的,起码你要弄清分区的几种类型;

7. 其它:关系理论的一到四范式,各种更新和插入异常的概念,一对多、多对多关系如何设计;

如果是Java程序员面试,设计模式是一定会考到的,你起码要熟悉以下概念:

1. 一共有23种设计模式;

2. 设计有六原则:开闭原则、迪米特里(最少知道)原则、聚合复用原则、接口隔离原则、里氏代换原则、依赖倒转原则;

3. 单例模式有7种实现方式,懒汉模式是线程不安全的,恶汉模式是线程安全的;

4. Spring的IOC是工厂模式的运用,AOP是代理模式的运用;

5. JDBC采用了策略模式,也有单例模式和工厂模式的运用;

以上是老狗在面与被面中常遇到的知识点,其它如C++面试一定会问到指针的多重继承,Java面试一定会问到SSH框架。以及根据公司的要求需掌握的一些独特知识点。这些都属于加分题了,全看各位的真实水平和发挥。

最后老狗奉献三道经典的面试题,这是老狗十几年前初出茅庐时遇到的,当时被这三道题打的溃不成军,从此一辈子都记得

1. 编一段程序,将阿拉伯数字的金额转换成中文大写(例如1001.11转换成壹仟零壹元壹角壹分);

2. 设计一个数据库表结构,存储有以下关系的零件信息:一个零件是其它多个零件的组成部分,同时由其它多个零件组成;

3.

当时这个工作的月薪是1200元,我因为没答出这三道题而丢掉了这个工作机会而懊恼不已。十几年过去了,现在初出茅庐的程序狗狗们动辄给自己开出8000到10000的月薪期望值,如果在面试时不能流畅的回答这些问题,何以有颜面对自己的期望呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值