1、给定一个方法f();这个方法一次可以排序5个数,给定25个无序的数,怎么只用这个方法从这25个数中选出前4个,最少要调用几次这个方法?
2.如果有两条单向链表,怎么判断这两条链表是否相交?要找出第一个相交的节点该怎么做?
两个链表都遍历一遍就行了,比较最后一个节点是否同一个对象就知道是否相交了。
先取得两条链表的长度l1,l2,长的那一条链表从(假设他的长度是l1)l1-l2个位置开始遍历,短的从头遍历,在一个循环里同时遍历,从上面那个图也可以看出来两个链表只要从同一个位置开始向遍历就一定能找到相交的节点
3.如果有1万条用户观看pptv的时间记录数据,数据的格式是
用户名 开始时间 结束时间 平台
user1 13:05 13:08 PC
user1 13:06 13:09 Iphone
user1 13:09 13:12 android
user1 13:13 13:15. ipad
.....
要合并1小时内的数据 比如 这几条数据就可以合为13:05 --- 13:12 13:13-----13:15
解法见usaco 1.2 milk2
4.有一个字符串:"Today Is SunDay",要把每个字符串逆序,并且大写字母的位置不变,比如这个字符串逆序后就是:"Yadot Si YadNus",不能用jdk提供的大小写转化/排序功能
5.下面2段代码执行结果是什么:
1、
File f = new File("a.txt");
String s = "hello";
FileOutputStream fos = new FileOutputStream(f);
f.write(s.getBytes());
2、
File f = new File("a.txt");
String s = "hello";
FileWriter fw = new FileWriter(f)
f.write(s);
字节流是可以不用关闭的,可以写入文件,字符流没有内容没有清空流
6.后台怎么推送消息到前台(就是消息提醒,类似百度贴吧有回帖时的提醒)
(1)ajax轮询
(2)把用户的请求挂起,等有消息了再返回。省去了客户端和服务器端连接的过程了
7.一个算术表达式比如 (1+2) * (3-6)可以化成一个二叉树
怎么还原成这个算术表达式
电话面试(阿里2014春招)
一、java基础部分
1、HashMap和hashSet可以有重复元素么? (不可以)
2、HashMap可以以自定义对象为key么? (要看是否重写hashCode和equals方法)
3、哪一种map遍历时可以按照插入的顺序输出? (LinkedHashMap)
4、Object类的方法有哪些(wait,notify,toString,notifyAll,equals,hashCode,不知道还有其他的么··)
5、遍历map的方法(我说了两种,1.取得keySet,遍历keySet再取得map的value。2.取得entrySet,遍历得到entry就可以得到key和value)
6、statement 和 preparedStatement的区别(preparedStatement是预编译sql,可以使用占位符,且可以防止sql注入攻击,效率更高点)
7、你了解preparedStatement的缓存机制么?(不了解··)
8、preparedStatement的占位符索引从几开始(从1开始 )
9、你了解java中的classloader么(jvm自有的类加载器有bootstrap classloader, 负责加载java基础类,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等,ExtClassloader负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class,AppClassloader负责加载当前java应用的classpath中的所有类。)
10、你了解jdk中的concurrent包么? (jdk5以后提供的一个多线程同步工具包,提供Lock接口做到显式的加锁,释放锁,提供Condition类实现线程间通信)
11、如果一个Condition对象没有绑定一个Lock,能否调用他的await方法(不知道···估计是不能吧)
12、jvm内存中堆和栈的区别(堆中存放对象,栈中存放引用··)
13、对于java中的异常处理你有什么见解(···以前看过一个异常框架的设计,貌似是要设计一个顶层异常,然后把其他的异常转化成这个异常再向上抛出··)
14、java的垃圾回收机制你了解多少(jvm会启动一个垃圾回收线程 不定时的回收不再有引用的垃圾对象··)
15、你了解新生代和老生代么?(jvm内存可划分为三块,新生代,老生代,永久代,新生代又分为一块eden区和两块suvivor区,新产生的对象在eden区,当eden区满时,触发gc,将存活的对象复制到suvivor区,如果suvivor也满,再次gc,把存活的对象复制到老生代···大概是这样吧,记得不太清)
16、你了解jvm调优么···(调节初始堆内存的大小···当然是越大越好··,调节新生代的大小,对于响应要求高的应用尽量调大,因为新生代越大,触发gc的频率越低,老生代的大小怎么调节··不太清楚)
17、怎么对集合进行排序(先实现comparable接口,调用Collections.sort方法)
18、编译时异常和运行时异常的区别(编译时异常需要强制捕获(try catch),运行时异常不需要,程序发生了运行时异常就停止运行了)
19、字节和字符的区别(字节是计算机的一个标准计量单位,占8个二进制位,字节流读取的时候就是一个字节一个字节读取的,字符是用来表示现实生活中的符号的,可能占多个字节,看具体的编码是什么,读取的时候就是按一个字符一个字符读取的)
20、Thread的sleep方法和Object的wait方法有什么区别(最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。)
21、进程和线程的区别
22、什么是死锁?描述一种死锁出现的场景
23、Interface和抽象类的区别(这个百度一下就知道了``)
24、你了解回调么?(回调在GUI编程中使用的较多,给一个按钮设置监听事件就是使用回调)
J2EE
1、j2ee是什么···(坑爹问题···,百度一下)
2、你了解JMS么?(听过不了解···)
3、servlet的生命周期(如果在web.xml中配置了servlet的loadstartup参数,小于0 的时候,servlet是在初次被访问的时候被加载,如果大于等于1,则是随tomcat启动而被加载,然后销毁是在web服务器停止的时候)
4、什么是同步,异步消息(举个例子··ajax就是异步消息)
5、JSP和servlet的却别(jsp本质上也是servlet。。具体百度)
6、session和cookie的区别(session保存在服务器端,cookie保存在客户端)
7、如果客户端禁用cookie怎么办?(这里的考点是session需要使用Cookie保存的唯一标识符--jsessionid,解决办法··URL重写,在url后附上jsessionid)
8、你用过数据库连接池么?,数据库连接池的原理了解么(用过··原理就是把数据库连接缓存起来)
9、HTTP 和 HTTPS的区别(HTTPS是HTTP+SSL,安全的连接···具体百度)
10、POST和GET的区别(老问题了···)
Spring
1、spring框架的主要思想(AOP、IOC```只要稍微百度一下也能说的八九不离十了)
2、AOP的实现方式(主要有两种,1、使用JDK的动态代理。2.、使用cglib动态修改字节码生成代理类)
3、AOP的应用(事务管理··日志管理)