upcseodvjd 发表于 2016-6-6 10:30:10

华为的两道java笔试题


[*]设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。   
[*]以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。   
[*]public class ThreadTest1{   
[*]private int j;   
[*]public static void main(String args[]){   
[*]ThreadTest1 tt=new ThreadTest1();   
[*]Inc inc=tt.new Inc();   
[*]Dec dec=tt.new Dec();   
[*]for(int i=0;i<2>   
[*]Thread t=new Thread(inc);   
[*]t.start();   
[*]t=new Thread(dec);   
[*]t.start();   
[*]}   
[*]}   
[*]private synchronized void inc(){   
[*]j++;   
[*]System.out.println(Thread.currentThread().getName()+"-inc:"+j);   
[*]}   
[*]private synchronized void dec(){   
[*]j--;   
[*]System.out.println(Thread.currentThread().getName()+"-dec:"+j);   
[*]}   
[*]class Inc implements Runnable{   
[*]public void run(){   
[*]for(int i=0;i<100>   
[*]inc();   
[*]}   
[*]}   
[*]}   
[*]class Dec implements Runnable{   
[*]public void run(){   
[*]for(int i=0;i<100>   
[*]dec();   
[*]}   
[*]}   
[*]}   
[*]}   

[*]编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。    
[*]  
[*]  答:代码如下:   
[*]  
[*]package test;    
[*]  
[*]class  SplitString {   
[*] String SplitStr;   
[*] int SplitByte;   
[*] public SplitString(String str,int bytes) {   
[*]  SplitStr=str;   
[*]  SplitByte=bytes;   
[*]  System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);   
[*] }   
[*]  
[*] public void SplitIt() {   
[*]  int loopCount;   
[*]  loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);   
[*]  System.out.println("Will Split into "+loopCount);   
[*]  for (int i=1;i<=loopCount ;i++ ) {   
[*]   if (i==loopCount){   
[*]    System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));   
[*]   } else {   
[*]    System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));   
[*]   }   
[*]  }   
[*] }   
[*]  
[*] public static void main(String[] args) {   
[*]  SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4);   
[*]  ss.SplitIt();   
[*] }   
[*]}    
[*]  
页: [1]
查看完整版本: 华为的两道java笔试题