面试之道---面试感慨
又到了一年一度的毕业季,博主也如此,面临着找工作的困境,由于学艺不算太精通,面试的过程中屡败屡战,当面试官说出那句:“你回去等通知吧,我们大概会在两、三天之内会给你回复,刚开始听到这句话时,会觉得自己还有希望,于是抱着一点希望静静的等待,到后来才发现,原来我只是一个备胎。
面试之道---公司介绍
首先,面试之前你得了解这个公司的背景,以及公司的业务等相关的问题。
“对面”是一款领先新型的游戏化社交产品,隶属于深圳市乐唯科技开发有限公司。
深圳市乐唯科技开发有限公司,设立于2011年,是一家年轻而充满朝气和活力的高科技技术创新型企业,管理层以及员工主要以80后、90初为主,发展迅猛,致力于手机应用、游戏等产品的开发,涉足iphone,android主流手机操作平台!我们有着深厚的手机软件开发的技术积累,以及强大的产品创新能力!立志为广大用户提供最优秀和便捷的移动互联网软件产品和服务。
面试之道---公司印象
面试的这家公司是位于深圳繁华软件的集中区域---南山软件基地,开始进入此大厦的时候,还需要身份证登记,如果有要去这家公司面试的小伙伴,请携带好自己的身份证,之后上了电梯,向右一看,”嘿,对面的你“(Ps:因为乐唯科技主要是弄游戏社交平台的),我当时的第一反应是,约吗? 额。。。 之后进入了公司里,这公司总体来说还是不错的,公司的前台是一个圆形的鹅蛋布局,前台妹子也不错︿( ̄︶ ̄)︿
面试之道--面试问题
面试问题1:
如何实现一个单例模式?
1 //懒汉式单例类.在第一次调用的时候实例化自己 2 public class Singleton { 3 private Singleton() {} 4 private static Singleton single=null; 5 //静态工厂方法 6 public static Singleton getInstance() { 7 if (single == null) { 8 single = new Singleton(); 9 } 10 return single; 11 } 12 }
以上是一个简单的单例模式的demo.
面试问题2:
如何实现一个线程池?(这里我以单线程池作为案例)
1 public class TestSingleThreadExecutor { 2 publicstaticvoid main(String[] args) { 3 //创建一个可重用固定线程数的线程池 4 ExecutorService pool = Executors. newSingleThreadExecutor(); 5 //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 6 Thread t1 = new MyThread(); 7 Thread t2 = new MyThread(); 8 Thread t3 = new MyThread(); 9 Thread t4 = new MyThread(); 10 Thread t5 = new MyThread(); 11 //将线程放入池中进行执行 12 pool.execute(t1); 13 pool.execute(t2); 14 pool.execute(t3); 15 pool.execute(t4); 16 pool.execute(t5); 17 //关闭线程池 18 pool.shutdown(); 19 } 20 }
代码调用部分,这里我创建了一个MyThread的类
1 publicclass MyThread extends Thread { 2 @Override 3 publicvoid run() { 4 System.out.println(Thread.currentThread().getName() + "正在执行。。。"); 5 } 6 }
代码执行结果:
pool-1-thread-1正在执行。。。 pool-1-thread-2正在执行。。。 pool-1-thread-1正在执行。。。 pool-1-thread-2正在执行。。。 pool-1-thread-1正在执行。。。
面试问题3:
10进制的100位进行累加如何实现?
首先,博主数学是渣,对于什么数据结构,算法什么的无感,还有进制这些也不是很了解,所以当时面试的时候就陷入了一种懵逼状态 ..(ˇˍˇ) 想~ ,但是博主还是热爱学习的好孩子,迫于下次面试遇到类似的问题,我还是得去研究,研究,在研究。。
这是10进制的100位的算法
100÷2=50。。。。余0
50÷2=25。。。。余0
25÷2=12。。。。余1
12÷2=6。。。。余0
6÷2=3。。。。余0
3÷2=1。。。。余1
1÷2=0。。。。余1
把余数倒过来排列即是十进制100转二进制。
即十进制100转二进制是1100100
下面的代码是博主想出的解决方案,如有什么地方有问题的话,可以在评论的下方提出解决方案:
1 package com.pb.entity; 2 3 public class Test { 4 public static void main(String[] args) { 5 //定义字符进行进制的累加 6 String str = ""; 7 //初始化变量是从100开始的 8 int num=100; 9 while(true){ 10 //对余数进行累加 11 str+=num%2; 12 //保证num的值是变化的 13 num = num/2; 14 //加入判断,遍历完变量之后退出循环 15 if(num==0){ 16 break; 17 } 18 } 19 //逆序读取字符串中的数据 20 System.out.println("最后的结果是:"+new StringBuilder(str).reverse().toString()); 21 } 22 }
最后的输出结果:
最后的结果是:1100100
面试之道---面试总结
通过这两次的面试我明白了,常问的知识点有:设计模式(单例、代理、工厂、观察者...等模式)、框架(spring、mybatis、ibatis、struts、hibernate ...)、数据库(mysql、sql server、oracle)会问一些sql和存储过程、其次是前端的一些技术:如js、jquery、ajax、json以及h5+css的使用.. 也希望能够给正在面试的小伙伴们带来一些帮助。
作者:薛之段王爷
博客:http://home.cnblogs.com/u/xzdwy-b/(转载请注明)