5个题目 做出3个即可通过package xx;import java.util.List;/**
* 补全obtainAllPost方法
* @author zhoufeng
*
*/
public class Test01 {
public static void main(String[] args) {
obtainAllPostTitle("http://bbs.csdn.net/forums/Java");
} /**
* 从指定的url中获取该url中所有的帖子标题
* @param url
*/
private static List<String> obtainAllPostTitle(String url) {
return null ;
}
}package xx;/**
*
* 从1~10中取任意个数进行组合(可重复)
* 打印出所有的组合
* @author zhoufeng
*
*/
public class Test02 {
}
package xx;/**
* 解析 src/xx/web.xml 文件 ,获取所有<servlet-name>节点的值
* @author zhoufeng
*
*/
public class Test03 {}
web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 使用polling和comet的方式 -->
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>setting</servlet-name>
<servlet-class>com.zf.controller.Setting</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setting</servlet-name>
<url-pattern>/setting</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>checkIsStarted</servlet-name>
<servlet-class>com.zf.controller.CheckIsStarted</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkIsStarted</servlet-name>
<url-pattern>/checkIsStarted</url-pattern>
</servlet-mapping>
</web-app>
package xx;/**
* 写一个生产者与消费者的实例
* 要求:5个生产者,与5个消费者 同时向一个容量为10的容器中放入 和 取出产品
* 当容器为空时 消费者不能再取出产品 当容器满时 生产者不能再放入产品
* @author zhoufeng
*
*/
public class Test04 {}package xx;/**
* 写一个定时器 在 {5:00 , 8:00 , 12:00} 时间打印出系统当前时间 (1997-01-01)这种格式
* @author zhoufeng
*
*/
public class Test05 {}
* 补全obtainAllPost方法
* @author zhoufeng
*
*/
public class Test01 {
public static void main(String[] args) {
obtainAllPostTitle("http://bbs.csdn.net/forums/Java");
} /**
* 从指定的url中获取该url中所有的帖子标题
* @param url
*/
private static List<String> obtainAllPostTitle(String url) {
return null ;
}
}package xx;/**
*
* 从1~10中取任意个数进行组合(可重复)
* 打印出所有的组合
* @author zhoufeng
*
*/
public class Test02 {
}
package xx;/**
* 解析 src/xx/web.xml 文件 ,获取所有<servlet-name>节点的值
* @author zhoufeng
*
*/
public class Test03 {}
web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 使用polling和comet的方式 -->
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>setting</servlet-name>
<servlet-class>com.zf.controller.Setting</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setting</servlet-name>
<url-pattern>/setting</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>checkIsStarted</servlet-name>
<servlet-class>com.zf.controller.CheckIsStarted</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkIsStarted</servlet-name>
<url-pattern>/checkIsStarted</url-pattern>
</servlet-mapping>
</web-app>
package xx;/**
* 写一个生产者与消费者的实例
* 要求:5个生产者,与5个消费者 同时向一个容量为10的容器中放入 和 取出产品
* 当容器为空时 消费者不能再取出产品 当容器满时 生产者不能再放入产品
* @author zhoufeng
*
*/
public class Test04 {}package xx;/**
* 写一个定时器 在 {5:00 , 8:00 , 12:00} 时间打印出系统当前时间 (1997-01-01)这种格式
* @author zhoufeng
*
*/
public class Test05 {}
当然,毕业生毕业前有一段实习期,这段时期如果在一家软件企业做的话应该没问题。第四个不知道你问的啥。
dom解析的那个方法忘了,用的时候得现查,第一个昨天刚偶然间学的。
逻辑编程的没问题。
5道题,算是勉强会3道吧,我今天7月毕业,毕业的时候全会也差不多
刚毕业的大学生应该多考一些逻辑方面的题而不是技术方面的题。
大学是怎么过的大家都清楚。
要是我的话更在意毕业生能学多少东西,而不是已经会多少东西。
当然这要看公司的情况,如果急着招人上项目的话,就着重技术;否则做点逻辑推理方面的笔试题和java基础就很好了。
还是根据url得到页面的内容再解析
根据url得到页面的内容再解析
例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。(不要使用标准库函数)
不妨把0插到数组中 然后直接比较0前后2个元素的绝对最小值即可
5文钱买一只公鸡,3文钱买一只母鸡,一文钱买三只雏鸡。现在用100文钱买一百只鸡,那么公鸡、母鸡、雏鸡各有多少只?
for(int i=3,j=4;i+j<25;j+=4,i+=3){
println("小鸡的个数:"+(75+i));
println("母鸡的个数:"+(25-i-j));
println("公鸡的个数:"+j);
}
用我这两道题吧 搞死求职者
* 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,
* 要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现
例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。(不要使用标准库函数)
* @author zhoufeng
*
*/
public class Test06 { /**
* 查找绝对值最小的数
* 思路:从左向右找第一个大于0的数 然后与该数的前一个数相加 结果如果为正数 就表示当前找到的这个数的绝对值小于 前一个数的绝对值
* 最好的情况下效率为O(1) 最差为O(n)
* @return
*/
static int findMinAbs(int array[]){
int i = 0 ;
for ( ; i < array.length; i++) {
if(array[i] == 0){
return 0;
}else if(array[i] > 0){
if(i > 0){
return ( array[i] + array[i - 1] )> 0 ? array[i - 1] : array[i];
}else{
return array[0];
}
}
}
return array[0] ;
}
public static void main(String[] args) { int array[] = { -8 ,-6 , -5 , 1 , 6 ,7 ,9};
int i = findMinAbs(array);
System.out.println("min abs :" + i);
}
}还有一个百钱百鸡用3个循环可以解决。好吧 , 征用第一题
int i = array.length ;
int x = 0 ;
if(i == 1)
return array[0] ;
if(array[0] >= 0)
return array[0] ;
if(array[i-1] <= 0)
return array[i-1] ;
while (true) {
i = i/2 ;
if(array[i+x] > 0 ){
if(array[i+x-1] <= 0){
return -array[i+x-1]>array[i+x] ? array[i+x] : array[i+x-1] ;
}
}
if(array[i+x] < 0){
if(array[i+x+1] >= 0){
return -array[i+x-1]>array[i+x] ? array[i+x] : array[i+x-1] ;
}
x = x+i ;
}
}
} 来一个高效率二分算法
static int findMinAbs(int array[]){
int i = array.length ;
int x = 0 ;
if(i == 1)
return array[0] ;
if(array[0] >= 0)
return array[0] ;
if(array[i-1] <= 0)
return array[i-1] ;
while (true) {
i = i/2 ;
if(array[i+x] > 0 ){
if(array[i+x-1] <= 0){
return -array[i+x-1]>array[i+x] ? array[i+x] : array[i+x-1] ;
}
}
if(array[i+x] < 0){
if(array[i+x+1] >= 0){
return -array[i+x]>array[i+x+1] ? array[i+x+1] : array[i+x] ;
}
x = x+i ;
}
}
}
做了第一题,要注意可能会有2个结果(相反数)
最坏时间复杂度O(n)import java.util.Arrays;/**
* 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,
* 要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200}
* ,绝对值最小的是-4。(不要使用标准库函数)
*
* @author zyc
*
*/public class Test6 {
static int arr1[] = { -20, -13, -4, 6, 77, 200 };
static int arr2[] = { -20, -13, -4, 4, 6, 77, 200 };
static int arr3[] = { -20, -13, -4, 0, 4, 6, 77, 200 }; public static void main(String[] args) {
System.out.println(Arrays.toString(findAbsMin(arr1)));
System.out.println(Arrays.toString(findAbsMin(arr2)));
System.out.println(Arrays.toString(findAbsMin(arr3)));
} static int[] findAbsMin(int[] arr) {
int min = Integer.MIN_VALUE;
for (int i : arr) {
if(i == 0) return new int[] { i };
if (i > 0) {
if (min + i > 0) {
return new int[] { min };
} else if (min + i < 0) {
return new int[] { i };
} else {
return new int[] { min, i };
}
}
min = i;
}
return new int[] { min };
}
}
1、为了保持总的数量100不变,下一组解中,公鸡的变化数为x,小鸡的变化数为y,母鸡的变化数为z,其中x、y、z可能为正数,也可能为负数,正数说明数量增加,负数数量减少,则x+y+z=0。
2、保持总钱数不变,钱的变化数也为0,5x+y/3+3z=0
两个式子和在一块得出x:y=4:3。为保持总钱数是正数,小鸡的数量肯定是3的倍数,公鸡的数量就是4的倍数,所以从75开始,每次小鸡数+3,每次公鸡数+4,而母鸡数减7找寻找下一组解。
这道题以前上中学的时候应该做过,有点印象。
代码如下:
public static void main(String[] args) {
new Timer().schedule(new TimerTask(){ @Override
public void run() {
// TODO Auto-generated method stub
}}, getDate(5));
new Timer().schedule(new TimerTask(){ @Override
public void run() {
// TODO Auto-generated method stub
}}, getDate(8));
new Timer().schedule(new TimerTask(){ @Override
public void run() {
}}, getDate(12));
}
public static Date getDate(int hour){
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
目前就能想到这个了,至于嵌套定时器是否ok,搞了好久都没搞定;
public static void main(String[] args) {
try {
URL url = new URL("http://tieba.baidu.com/p/1765573603");
URLConnection urlConnection = url.openConnection();
BufferedReader bufr = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream()));
String line = null;
while ((line = bufr.readLine()) != null) {
System.out.println(line);
String regex = "^\\w+@\\w+(\\.\\w+){1,3}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
String email = matcher.group();
System.out.println(email);
}
}
} catch (MalformedURLException e) {
throw new ExceptionInInitializerError(e);
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
} }
不过思想就是那样的,你肯定懂的,我一个文科生自学Java不容易啊!!!
这和库函数有什么关系?从数组第一个元素开始找,找到0直接输出,如果没有0就找到第一个正数。
比较找到的正数和该正数的前一个负数的和
相同 全部输出
>0 输出负数
<0 输出正数随手写了个求绝对值的方法 static double abs(double d) {
return d >= 0 ? d : -d;
}
你还别说 我前几天还真看过了,确实和你的不一样还有你的O(N)效率,为啥不舍得提高一点呢
/**
*
* 从1~10中取任意个数进行组合(可重复)
* 打印出所有的组合
* @author zhoufeng
*
*/
public class Test02 {
}题二 求解?
1 ~ 10 的结果太多了。不方便贴出来。 改成 1 ~ 4 吧public class Test02 {
static void compose(int array[] ){
compose(array , 0 , new int[array.length] , 0);
}
static void compose(int array[] , int arrayIndex ,int tmp[] , int tmpIndex){
if(tmpIndex == tmp.length)
return ;
for (int i = arrayIndex; i < array.length ; i++) {
tmp[tmpIndex] = array[i];
printArray(tmp , tmpIndex + 1);
compose(array , i , tmp , tmpIndex + 1);
}
}
static void printArray(int array[] , int len){
for (int i = 0; i < len ; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
compose(new int[]{1 , 2 , 3 ,4 });
}
}
1 1
1 1 1
1 1 1 1
1 1 1 2
1 1 1 3
1 1 1 4
1 1 2
1 1 2 2
1 1 2 3
1 1 2 4
1 1 3
1 1 3 3
1 1 3 4
1 1 4
1 1 4 4
1 2
1 2 2
1 2 2 2
1 2 2 3
1 2 2 4
1 2 3
1 2 3 3
1 2 3 4
1 2 4
1 2 4 4
1 3
1 3 3
1 3 3 3
1 3 3 4
1 3 4
1 3 4 4
1 4
1 4 4
1 4 4 4
2
2 2
2 2 2
2 2 2 2
2 2 2 3
2 2 2 4
2 2 3
2 2 3 3
2 2 3 4
2 2 4
2 2 4 4
2 3
2 3 3
2 3 3 3
2 3 3 4
2 3 4
2 3 4 4
2 4
2 4 4
2 4 4 4
3
3 3
3 3 3
3 3 3 3
3 3 3 4
3 3 4
3 3 4 4
3 4
3 4 4
3 4 4 4
4
4 4
4 4 4
4 4 4 4
* 打印出所有的组合
具体的业务需求 没联网 我也有很多api名称不知道怎么写
感觉楼主的题出得很不好,要是给毕业生做,就更不好!除了第2题和第4题,其它的完全不应该出现在面试题中。
第一个题不知道撸主是想考对网络接口的使用,还是要考对抓取内容的分析。感觉上应该是想考前者。个人觉得换成对http基础知识考察会更好。
不知道大家怎么都不说第二题,个人觉得第二题是最难的,完全的数学能力。
考XML的解析问题属于用过就知道,没用过稍微看一下doc也能写出来的问题,没有价值。
第4题还可以,可以考线程使用,共享资源同步,基础但是实用的知识。
定时器,该出现在面试题里吗?能考察什么东西呢?
少侠你看这种解法能得几分class Test02
{
public static void main(String[] args)
{
int a,b,c,d;
for (a=1;a<5 ;a++ )
{
System.out.print(a);
System.out.print(" ");
for (b=1;b<5 ;b++ )
{
System.out.print(b);
System.out.print(a);
System.out.print(" ");
for (c=1;c<5 ;c++ )
{
System.out.print(c);
System.out.print(b);
System.out.print(a);
System.out.print(" ");
for (d=1;d<5 ;d++ )
{
System.out.print(d);
System.out.print(c);
System.out.print(b);
System.out.print(a);
System.out.print(" ");
}
}
System.out.println();
}
}
}
}