软件公司笔试题

1.java基本数据类型

byte short int long float boolean double char

2。单例模式

第一种(懒汉,线程不安全):

Java代码  

  1. public class Singleton {
  2. private static Singleton instance;
  3. private Singleton (){}
  4. public static Singleton getInstance() {
  5. if (instance == null) {
  6. instance = new Singleton();
  7. }
  8. return instance;
  9. }
  10. }

这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。

第二种(懒汉,线程安全):

Java代码  

  1. public class Singleton {
  2. private static Singleton instance;
  3. private Singleton (){}
  4. public static synchronized Singleton getInstance() {
  5. if (instance == null) {
  6. instance = new Singleton();
  7. }
  8. return instance;
  9. }
  10. }

这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。

第三种(饿汉):

Java代码  

  1. public class Singleton {
  2. private static Singleton instance = new Singleton();
  3. private Singleton (){}
  4. public static Singleton getInstance() {
  5. return instance;
  6. }
  7. }

这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用getInstance方法, 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance显然没有达到lazy loading的效果。

第四种(饿汉,变种):

Java代码  

  1. public class Singleton {
  2. private Singleton instance = null;
  3. static {
  4. instance = new Singleton();
  5. }
  6. private Singleton (){}
  7. public static Singleton getInstance() {
  8. return this.instance;
  9. }
  10. }

表面上看起来差别挺大,其实更第三种方式差不多,都是在类初始化即实例化instance。

第五种(静态内部类):

Java代码  

  1. public class Singleton {
  2. private static class SingletonHolder {
  3. private static final Singleton INSTANCE = new Singleton();
  4. }
  5. private Singleton (){}
  6. public static final Singleton getInstance() {
  7. return SingletonHolder.INSTANCE;
  8. }
  9. }

3.字符串反转

{
String s="abcdefg";
String s2="";
char[] cs=s.toCharArray();
for(int i=cs.length-1;i>=0;i--)
{
s2=s2+cs[i];
}
System.out.println("对字符串进行反转操作后为:"+s2);
StringBuffer sb=new StringBuffer("abcdefg");
StringBuffer sb2=sb.reverse();
System.out.println("对StringBuffer进行反转操作后为:"+sb2);
}
4.字符串中字符替换

String s2="";
            char[] cs=s.toCharArray();
            for(int i=0;i<s.length();i++){
                if(i<5){
                    s2=s2+"*";
                }else{
                    s2=s2+cs[i];
                }
            }
            System.out.println(s2);

时间: 2024-12-29 11:32:57

软件公司笔试题的相关文章

某支付公司笔试题二

题目:用java编写一段程序采用选择排序法对数组array = {25,15,42,16,12,36}进行由小到大排序. 1.选择排序法 该排序法的思想是每次从当前元素开始往后查找最小元素,将最小与当前元素进行位置互换.选择排序和冒泡排序相比优势在于交换次数减少. // 时间复杂度n(n-1)/2,即O(n^2) public static void selectSort(int[] array){ int k,tmp,len; len=array.length; for(int i=0;i<l

java各公司笔试题集1

IBM笔试题 注:IBM笔试题一小时之内完成,题目全部用英文描述,这里用中文表述 一.名词解释 1.Eclipse 2.J2EE 3.EJB 4.Ajax 5.Web service 二.找出以下代码问题 public class test{ public void print(String str){ char[] s=str: } } public class a{ public static void main(String [] args){ puts() } } 三.写出以下输出 pu

某公司笔试题解读(一)

上午刚参加完一公司的笔试,整个笔试给我的感受是,比较基础也很全面.但自己就是有好多不确定,好多需要时间思考,总之就是基础需要补回来.下面我就总结一下这次的笔试,举一反三地把相关知识点也梳理下. 一.最让我抓狂的SQL题 这种SQL题我以前做过好多次了,工作两年多用得少,SQL也写得不多,运用SQL的思维能力都下降了.题目大概是“有一张销售营业额表(t_sales),表结构如下: CREATE TABLE t_sales( t_person VARCHAR(20), #销售人员 t_item VA

某公司笔试题

记录一下一份笔试题上的知识点: 1.short类型的范围是多少? 2.考i++ 和++i的考点. 3.可以成为内部函数的修饰类型为. 4.关于建索引的知识. 5.wait() 和 sleep()的区别. 6. gc是什么,为什么需要有gc. 7.谈谈代码重复的理解. 8.final finally finalized的区别. 9.写一个singleton. 10.分别用递归和非递归实现二叉树的后序遍历. 11.有a[n]和b[n]两个数组,f(x)为随机函数,请将a[n]的数随机赋给b[n],要

操作系统各大公司笔试题汇总

转自:Hackbuteer1 http://blog.csdn.net/hackbuteer1/article/details/6787354 1.在段页式存储管理中,其虚拟地址空间是() A.一维                               B.二维                                C.三维                            D.层次 答案:B 2.采用( )不会产生内部碎片(“内零头”) A.分页式存储管理          

微软公司笔试题_附上源码解决

第一道题 # -*- coding: utf-8 -*- ''' f(a*b, acb) => true f(abc*, abbc) => false f(**bc, bc) => true ''' import re string='abbc' Regex = re.compile(r'(abc)*') def f(Regex,string): mo = Regex.search(string) if mo.group()!='': return True else: return F

软件工程师笔试题

预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3). 意识到这个表达式将使一个16位机

IT笔试题

史上最发散的软件工程师笔试题 1.请编写代码实现如下逻辑:有一只猫和多只老鼠,猫叫了一声,老鼠都吓跑了. 2.请介绍一种数据结构和算法,代表你在这个领域的能力. 3.请从正反两面介绍一下你对代码质量的看法,什么样的代码称得上写的漂亮,什么样的代码写的糟糕. 4.请介绍一种设计模式,代表你在这个领域的能力.

诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点

总结一下Microsoft Devices Group的软件类笔试题,所有笔试题分两份试卷,逻辑题一份和软件测试题一份,只总结技术题喽~题目全英文,只包含选择题和填空题,选择题居多,分单选和多选,多选题题目会标注出来.总体来说考察的很基础也很细节,难度适中.下面把记得的一些知识点总结一下下: *命名管道的定义. *主机A发送IP数据报给主机B,途中经过了5个路由器.试问在IP数据报的发送过程总共使用几次ARP(6次) *Linux系统下,给一个文件重命名(mv A,B) *考察无符号整型数和有符