`
wangleide414
  • 浏览: 606859 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

人人网Java笔试题

 
阅读更多

 

从网上找到一份人人网JAVA的笔试题,做了一下,受益匪浅,贴出来,个人水平有限,欢迎各位留言讨论。

                                                                       JAVA 笔试题

【填空题】

  1. java面向对象的三大特征是:_______,_______,_______.

答:封装,继承,多态。

 

  1. sleep()和wait()的区别是___________________________.

答:(1)sleep()不释放对象锁,wait()释放对象锁。

(2)sleep()可以在时间未到时被打断,抛出异常,所以需要捕获异常,wait不需要捕获异常。

(3)sleep()是Thread类的方法,wait()是Object类的方法。

 

  1. 一个类被JVM回收的标志是_______________________.

答:类未被其他的活动类引用。

 

  1. 重写JAVA equals方法,需要同时重写:_____________.

答:hashCode方法。这是JAVA的常规约定,如果不重写hashCode,使用HashMap,HashSet等类时会出现错误。调用equals()方法比较两个对象的时候,编译器会自动调用hashCode()来比较两个对象是否产生相同的整数结果.equals()返回true,则hashCode()必返回true.equals()返回false,则hashCode()必返回false.那么重写equals()方法,肯定必须重写hashCode方法来保证二者的同步.

 

  1. String, StringBuilder, StringBuffer的区别:____________.

答:String保存字符串常量,字符串的每次变化都会产生一个新的字符串对象。StringBuilder和StringBuffer都是可以变化而不产生新的对象的。其中,StringBuffer是线程安全的,StringBuilder是线程不安全的。

 

  1. 增加数据表一列的SQL语法:_____________________.

答:alter [table] add [列].

 

  1. JSP的内置对象及方法request,_______,______,_______.(常用三个即可)

答:response,session,out,page,application,exception,pageContext,config.

 

  1. List,Set,Map是否继承自Collection接口:_____________.

答:List和Set 是的,Map不是。

 

  1. 数据库事务特征________,________,________,________.

答:ACID,原子性,一致性,隔离性,持久性。

 

  1. 针对10,100,32,45,58,126,3,29,200,400,0利用除商留余法构造长度为13的数据的HASH:________________________________.

答:全部除以25再取余数,再连到一起?结果是:1007208134000.也可能最后再MOD一个10000000000000,题意没有读懂。

 

【选择题】

  1. 已知:

Integer i=new Integer(42);

Long l=new Long(42);

Double d=new Double(42.0);

 

下面哪些选项返回结果为true:

A.(i==l)

B.(i==d)

C.(d==l)

D.(i.equals(d))

E.(d.equals(l))

F.(i.equals(l))

G.(l.equals(42L))

答:ABC显然是错的,==比较的是两个对象的地址。Long 和 Double之间,Integer 和 Double之间都是不能自动转化的。但是Long和Integer之间可以自动转化,所以,F和G是正确的。

 

  1. 关于用abstract定义的类,下列说法正确的是()
  2. 可以被实例化  B.不能够派生子类  C.不能被继承  D.只能被继承 E.能够被抽象类继承

答:概念题,DE是正确的。

 

  1. 当线程A使用某个对象,而此对象又需要线程B修改后才能符合A线程的需要,这时线程A就要等待线程B完成修改工作,这种现象称为()
  2. 线程的同步  B.线程的互斥  C.线程的调度  D.线程的就绪

答:概念题,C。

 

  1. 在JAVA程序中定义一个类,类中有一个没有访问权限修饰的方法,则此方法()

A. 类外的任何方法都能访问它

B. 类外的任何方法都不能访问它

C. 类的子类和同包类能访问它

D. 只有类和同包类才能访问它

答:概念题,D。

 

  1. 有如下程序代码,在执行完后x和y的值是多少()

Int x=8,y=2,z;

x=++x*y;

z=x/y++;

 

  1. x=16,y=2.
  2. X=16,y=4.
  3. X=18,y=2.
  4. X=18,y=3.

答:D,不解释。

 

【问答题】

  1. int i=0;i=i++;以上操作中i=i++;是线程安全的吗?如果不安全请说明上面操作在JVM中执行过程,为什么不安全?并且说出JDK中哪个类能达到以上程序的效果,并且是线程安全而且高效,并简述其原理。

答:不是线程安全的。JVM中,赋值语句的执行过程是,先把赋值号右边的值存入一个栈中,再从栈中弹出到赋值号左边的变量中。所以,在执行i=i++后i的值为0。但是如果在多线程的环境下执行i=i++,线程A中执行到把i压入栈,而在此之前线程B中执行到把i++,那么栈中i的值就已经改变了,最后线程A执行弹栈的操作,那么i的值就不是0了,所以是线程不安全的。AtomicInteger中提供了线程安全且高效的原子操作。其底层的原理是利用处理器的CAS(比较并交换)操作来检测栈中的值是否被其他线程改变,如果被改变则CAS操作失败。这种实现方法比用sycronized来实现同步,底层显然有着更高的执行效率。

   2.数组int[n] a={1,2,2,……}数组a满足以下条件,均为正整数,a[i+1]>=a[i]快速找出满足a[i]=i的数。

答:这道题大家都没有想出O(logn)的算法,只好从常数上优化。可以看出的一个性质是数组下标每次都是固定地增加1,所以若a[i]>i,则接下来的a[i]-i-1个数一定不可能满足a[i]=i;如果a[i]<i,则之前的i-a[i]-1个数一定不可能满足a[i]=i,枚举的时候可以从两头往中间枚举,增量为|a[i]-i|。时间复杂度依然是O(n),但是比直接枚举要快。代码如下:

package com.test;

 

import java.util.Scanner;

 

public class Main1 {

    private static Integer[] a = new Integer[500];

    private static String[] str;

 

    public static int find(int l, int r) {

       if (l > r)

           return -1;

       if (a[l] == l)

           return l;

       if (a[r] == r)

           return r;

       int left_increment = Math.abs(a[l] - l);

       int right_increment = Math.abs(a[r] - r);

       return find(l + left_increment, r - right_increment);

    }

 

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       String string = scanner.nextLine();

       str = string.split(" ");

       for (int i = 0; i < str.length; i++)

           a[i] = Integer.parseInt(str[i]);

       int pos = find(0, str.length - 1);

       if (pos == -1)

           System.out.println("不存在满足a[i]==i的数");

       else

           System.out.println("找到满足条件的数:a[" + pos + "]==" + pos);

    }

 

}

  3.数组 int[n] a={1,2,3,3,4,3,2……}数组a中的数均为正整数,求满足a[i]+a[t]=a[x],其中i,t,x均为正数,且小于等于n,求最大a[x].

答:本人水平有限,目前只想到O(n^2*logn)时间复杂度的算法。先将数组排序,然后从后往前枚举a[x],对于每一个a[x],从0到a[x-1],枚举a[i]的值,再二分查找a[t]是否存在,代码如下:

package com.test;

 

import java.util.Scanner;

 

public class Main1 {

    private static Integer[] a = new Integer[500];

    private static String[] str;

 

    public static void quicksort(int l, int r) {

       if (l >= r)

           return;

       int i = l - 1, j = r + 1;

       int mid = a[(l + r) >> 1];

       while (i < j) {

           i++;

           j--;

           while (a[i] < mid)

              i++;

           while (a[j] > mid)

              j--;

           if (i < j) {

              int t = a[i];

              a[i] = a[j];

              a[j] = t;

           }

       }

       quicksort(l, j);

       quicksort(j + 1, r);

    }

 

    public static boolean fen_2(int t) {

       int l = 0, r = str.length - 1, mid;

       while (l < r) {

           mid = (l + r) >> 1;

           if (a[mid] == t)

              return true;

           if (a[mid] < t)

              l = mid + 1;

           if (a[mid] > t)

              r = mid;

       }

       return false;

    }

 

    public static int find() {

       for (int i = str.length - 1; i >= 0; i--) {

           for (int j = 0; j < i; j++)

              if (fen_2(a[i] - a[j]))

                  return i;

       }

       return -1;

    }

 

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       String string = scanner.nextLine();

       str = string.split(" ");

       for (int i = 0; i < str.length; i++)

           a[i] = Integer.parseInt(str[i]);

 

       quicksort(0, str.length - 1);

 

       int ff = find();

       if (ff != -1)

           System.out.println("最大的a[x]为:" + a[ff]);

       else

           System.out.println("没有在数组中找到满足条件的数");

    }

}

 

我的朋友廖宇翔大神说了一个O(n^2)的算法,之前我也想到了,但是我误认为这是一个错误的算法,会出现某些状态没有枚举到的情况,不过在大神的开导下我豁然开朗。仍然是先快速排序,从后向前枚举a[x],然后设定两个指针p,q分别指向a[0]和a[x-1],从两边往中间扫,如果两个指针指向的数相加大于a[x],则q指针向左移(若存在a[i]和a[t]满足条件,那么此时i和t必然在数组下标为0到x-2的区间内);如果个指针指向的数相加小于a[x],则p指针向右移(同理)。

代码如下:

 

package com.test;

 

import java.util.Scanner;

 

public class Main1 {

    private static Integer[] a = new Integer[500];

    private static String[] str;

 

    public static void quicksort(int l, int r) {

       if (l >= r)

           return;

       int i = l - 1, j = r + 1;

       int mid = a[(l + r) >> 1];

       while (i < j) {

           i++;

           j--;

           while (a[i] < mid)

              i++;

           while (a[j] > mid)

              j--;

           if (i < j) {

              int t = a[i];

              a[i] = a[j];

              a[j] = t;

           }

       }

       quicksort(l, j);

       quicksort(j + 1, r);

    }

 

    public static int find() {

       for (int i = str.length - 1; i >= 0; i--) {

           int p = 0, q = i - 1;

           while (p <= q) {

              if (a[p] + a[q] > a[i]) {

                  q--;

                  continue;

              }

              if (a[p] + a[q] < a[i]) {

                  p++;

                  continue;

              }

              return i;

           }

       }

       return -1;

    }

 

    public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       String string = scanner.nextLine();

       str = string.split(" ");

       for (int i = 0; i < str.length; i++)

           a[i] = Integer.parseInt(str[i]);

 

       quicksort(0, str.length - 1);

 

       int ff = find();

       if (ff != -1)

           System.out.println("最大的a[x]为:" + a[ff]);

       else

           System.out.println("没有在数组中找到满足条件的数");

    }

 

}

 4.用JAVA扫描指定文件夹下面所有以.txt,.log结尾的文件,并将其绝对路径输出。

答:主要考察递归遍历文件夹以及获取文件后缀名两部分。

 

  1. 简要介绍一下你所熟悉的设计模式,并给自己假设一种应用场景,并用程序将其实现,并指出如此设计的优缺点(单实例模式除外)

答:proxy模式,意图为其他对象提供一种代理以控制对这个对象的访问。优点: 向客户端隐藏了访问某个对象的细节及复杂性;可以动态地调用一个对象中的方法,且无需实现固定的接口。在AOP编程中,可以利用proxy模式来实现核心代码和日志代码的分离。程序实现如下:

 

InterfaceCore接口:

package com.test.interceptor; 

public interface InterfaceTarget { 
public void docore(); 

 

core类:

package com.test.interceptor; 

public class Target implements InterfaceTarget { 
public void docore() { 
System.out.println("核心代码:我现在非常无聊!"); 
}

 

 MyLogger类: 

package com.test.interceptor; 

public class MyLogger { 
public void before(){ 
System.out.println("无聊之前记一下"); 


public void after(){ 
System.out.println("无聊之后又记一下"); 

 

MyProxy类:

package com.test.interceptor;

import java.lang.reflect.Proxy;

public class MyProxy {
public Object getProxy(Object object){

MyHandler myhandler=new MyHandler(object);

return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), myhandler);
}

 

MyHandler类:

package com.test.interceptor;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyHandler implements InvocationHandler{

private Object object;

private MyLogger logger = new MyLogger();

public MyHandler(Object object){
this.object=object;
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result = null;

logger.before();

result = method.invoke(object, args);

logger.after();

return result;
}
}

 

Client类:

package com.test.interceptor;

public class Client {
public static void main(String args[]){

InterfaceCore core=new Core();

MyProxy myproxy=new MyProxy();

InterfaceCore proxy = (InterfaceCore)myproxy.getProxy(core);

proxy.docore();
}
}

 output:

无聊之前记一下

核心代码:我现在非常无聊!

无聊之后又记一下

分享到:
评论

相关推荐

    人人网java面试题

    【人人网Java面试题解析】 Java面试题涵盖了面向对象特性、线程管理、垃圾回收、字符串处理、数据库操作、JSP内置对象、集合框架、事务处理、哈希算法以及设计模式等多个方面,这些都是Java开发中不可或缺的基础...

    人人网java笔试

    【标题】:“人人网java笔试”涉及的知识点 在“人人网java笔试”中,我们通常会遇到一系列针对Java编程语言及其相关概念的测试题目。这些题目旨在考察候选人的编程基础、逻辑思维以及对Java特性的理解。以下是一些...

    阿里腾讯人人java面试题大全

    《阿里腾讯人人Java面试题大全》是一份涵盖了多个知名互联网公司Java面试的综合资源,以PDF格式呈现,便于学习和查阅。这份资料整理了不同年份的校招笔试题目,帮助求职者准备Java相关的技术面试,提升自己的技能...

    人人网校园招聘笔试题2012

    【描述】"最新校园招聘笔试题,人人网,java笔试题"表明这些题目是当时最新的,旨在考察应届毕业生的最新技术和理论知识。Java作为企业级应用开发的重要语言,很可能在笔试中占据主导地位。Java笔试题可能涉及到类与...

    互联网行业面试笔试真题资料BAT谷歌微软等笔试面试真题复习资料合集200MB.zip

    C++面试题笔试题 CC++面试问题分类大汇总.docx C语言 gamesloft C++面试题目.docx Google笔试面试 IQ智力面试题笔试题 JAVA笔试面试资料 NET面试题笔试题 web开发 中兴资料 微软笔试面试 数据库面试题笔试题 百度...

    2012人人网校招山东济南java笔试.rar

    标题中的“2012人人网校招山东济南java笔试.rar”表明这是一份与2012年人人网在山东济南进行的校园招聘Java程序员相关的资料,主要包含笔试环节的内容。描述中提到的“2011年9月25晚山东大学软件园校区”可能是笔试...

    各大知名企业面试题

    2016奇虎360JAVA研发工程师内推笔试题 阿里巴巴2015校招研发 阿里巴巴2016前端开发工程师笔试二 阿里巴巴2016前端开发工程师笔试一 阿里巴巴2016数据挖掘工程师笔试 阿里巴巴2016研发工程师笔试选择题二 阿里巴巴...

    2015校园招聘笔试题大合集

    2015校园招聘笔试题大合集,汇集百度、腾讯、阿里等多家大型互联网企业的面试题,非常具有参考价值。 内容包括: 360校园招聘2015届技术类笔试题.pdf 2015阿里巴巴校招研发在线笔试题.pdf 2015阿里校招系统...

    最新出炉2015届中国顶级IT互联网公司校招笔试题

    2015年欢聚时代(YY)校园招聘Java笔试题目.pdf 2015网易校招JAVA开发工程师.pdf 2015网易游戏校园招聘笔试题游戏插件研发岗.pdf 2015网易游戏校园招聘运维开发岗笔试题.pdf 2015阿里巴巴校招研发在线笔试题....

    千橡笔试题 人人笔试题!

    【千橡笔试题 人人笔试题!】 在千橡公司的笔试题目中,涵盖了计算机科学的基础知识,包括数据结构、算法、编程语言特性和面向对象编程等。以下是对这些知识点的详细解析: 1. **满3叉树高度计算**:满3叉树是一种...

    IT名企2016笔试真题+答案

    “2016奇虎360C++研发工程师内推笔试题.pdf”和“2016奇虎360JAVA研发工程师内推笔试题.pdf”展示了360公司对于安全和性能的要求。360作为网络安全领域的领头羊,其笔试题目可能会涉及到C++或Java的内存管理、多线程...

    人人网2012年电子科大校招笔试题(android).doc

    以上是对人人网2012年电子科大校招Android工程师笔试题中Java部分知识点的详细解答。这些知识点对于理解和掌握Java编程语言至关重要,同时也反映了在面试或实际工作中对Java程序员的基本技能要求。

    各大公司笔试面试题

    4. **千橡**(人人网):尽管千橡集团的业务主要集中在社交网络,但其面试题也可能涉及前端开发、后端架构、移动应用开发等。面试者需要具备HTML、CSS、JavaScript基础,理解Web标准,同时对服务器端编程和数据库...

    IT名企2016笔试真题+答案.zip

    2016奇虎360C++研发工程师内推笔试题.pdf 2016奇虎360JAVA研发工程师内推笔试题.pdf 人人网2015研发笔试卷A.pdf 人人网2015研发笔试卷E.pdf 美团2016研发工程师模拟笔试题.pdf 。。。。。。

    2015校园招聘笔试题大合集(原版)

    《2015校园招聘笔试题大合集(原版)》是一份珍贵的资源,汇集了2015年度各大知名企业,如人人、阿里、网易等公司在校园招聘过程中的笔试题目。这些题目反映了当年企业对求职者的技术要求和素质评估标准,对于当前的...

    人人网2015研发笔试卷B.pdf

    这篇文档是人人网2015年研发部门的笔试题B卷,主要涵盖了计算机科学的基础知识,包括排序算法、数据结构、概率计算、操作系统、网络协议、编程问题等多个方面。以下是对这些知识点的详细说明: 1. **排序算法**: ...

    人人网2016 产品岗.pdf

    【人人网2016产品岗笔试题解析】 1、网易与中国电信合作推出的这款应用名为“易信”。易信是一款融合了即时通讯、免费短信、电话留言、语音对讲等功能的通讯工具,旨在提供便捷、高效的通信体验。 2、经常使用的...

    百度2010-2011年各部门招聘笔试题及面经总结.doc

    1. 网站盈利模式分析,如豆瓣、人人网等,需要理解广告收入、会员服务、数据分析等多种商业模式。 2. 下载内容的防复制措施可能涉及数字版权管理、加密技术等。 3. 智能手机百度页面设计需考虑用户需求、搜索效率和...

    网易2016校园招聘笔试题 运营.pdf

    如Facebook对应人人网,eBay对应淘宝网,Google搜索对应百度搜索,MSN对应腾讯QQ,卡巴斯基对应金山毒霸,Ms office对应WPS。这种模式反映了中国互联网市场对全球趋势的适应和创新。 2. **O2O(Online To Offline)...

Global site tag (gtag.js) - Google Analytics