永发信息网

有没有类似剑指offer的java面试书

答案:1  悬赏:60  手机版
解决时间 2021-01-30 08:26
  • 提问者网友:浮克旳回音
  • 2021-01-29 23:15
有没有类似剑指offer的java面试书
最佳答案
  • 五星知识达人网友:野慌
  • 2021-01-30 00:25
面试题1:赋值运算符函数
Java中不能重载运算符(C++可以)
String 类的“+”是通过StringBuidler的append追加实现的。
可以重写自定义类的toString()方法,对象相加时会调用toString()的方法。toString()是Object类具有的方法,而所有的类都继承自Object,所以所有的对象都有这个方法。
面试题2:实现Singleton模式
可行的解法1:双检测机制
public class Singleton {
private Singleton() {}
private static Singleton instance=null;
//静态工厂方法
public static Singleton getInstance() {
if (instance == null) {
//加上了同步锁和双重检验机制
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return single;
}
}
推荐解法1:静态内部类
public class Singleton {
private static class SingletonHolder {
private static final Singleton instance = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
//第一次调用getInstance,涉及到了SingletonHolder的引用,内部静态类的实例才会真正装载
return SingletonHolder.instance;
}
}
推荐解法2:在类创建的同时就实例化 singleTon
public class Singleton {
private Singleton() {}
private static final Singleton singleton = new Singleton();
//静态工厂方法
public static Singleton getInstance() {
return singleton;
}
}
1234567891011121314151617181920212223242526272829303132333435363738

面试题3:二维数组中的查找

public class test3 {

public boolean find(int[][] matrix,int value){
boolean found=false;
int rows=matrix.length;//行数
if (matrix!=null) {
int row=0;
int column=matrix[0].length-1;
while (row=0)
{
if (matrix[row][column]==value)
{
found=true;
break;
}
else if(matrix[row][column] {
row++;
}
else if(matrix[row][column]>value)
{
column--;
}
}
}
return found;
}
public static void main(String[] args) {
int[][] a=
{
{1,2,8,9},
{2,4,9,12},
{4,7,10,13},
{6,8,11,15}
};
boolean found=new test3().find(a, 7);
System.out.println(found);
}

}
123456789101112131415161718192021222324252627282930313233343536373839404142

面试题4:替换空格
public class test4 {
public String replaceBlank(String s){
int len=0;
char[] target;
char[] original=s.toCharArray();
for (int i = 0; i < original.length; i++)
{
if (original[i]==' ')
{
len++;
}
}
len=original.length+len*2;
target=new char[len];
int j=0;
for (int i = 0; i < original.length; i++)
{
if (original[i]==' ')
{
target[j]='%';
target[++j]='2';
target[++j]='0';
j++;
}else
{
target[j]=original[i];
j++;
}
}
return new String(target);//String类的构造函数 可以直接将Char数组转化为字符串
}
// public String replaceBlank(String s){
// return s.replace(" ", "%20");//利用String类的replace函数 基于正则表达式
// }
public static void main(String[] args) {
String s="we are happy!";
String v=new test4().replaceBlank(s);
System.out.println(v);
}
}
1234567891011121314151617181920212223242526272829303132333435363738394041

面试题5:从尾到头打印链表
public class test5{
private class Node{
T valueT=null;
Node next=null;
public Node(T valueT) {
this.valueT = valueT;
}
}
private Node head=null;
public Node getHeadNode(){
return head;
}
public void insertTail(T value){
Node nextNode=null;
if (head==null) {
head=new Node(value);
}else {
nextNode=head;
while (nextNode.next!=null)
{
nextNode=nextNode.next;
}
nextNode.next=new Node(value);
}
}

public void reversePrint(Node head){
if (head!=null)
{
if (head.next!=null)
{
reversePrint(head.next);
}
System.out.println(head.valueT);
}
}
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7};
test5 t=new test5();
for (int i = 0; i < a.length; i++) {
t.insertTail(a[i]);
}
t.reversePrint(t.getHeadNode());
}
}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯