公司做网站还是做app,中国贸易服务网,网站开发合理性是什么意思,网易邮箱企业版一、Java
1、成员变量作用域public/protected/defaultprivate/区别#xff1f;
public#xff1a;该成员变量或其方法对当前类、同一包、子类、其他包都可见#xff0c;所有类和对象都可以直接访问。
protected#xff1a;该成员变量或其方法对当前类、同一包、子类都可…一、Java
1、成员变量作用域public/protected/defaultprivate/区别
public该成员变量或其方法对当前类、同一包、子类、其他包都可见所有类和对象都可以直接访问。
protected该成员变量或其方法对当前类、同一包、子类都可见。
default该成员变量或其方法对当前类、同一包可见子类与该成员变量所在的父类位于同一包子类可以访问否则不能。
private该成员变量或其方法只对当前类可见。
2、Override覆盖和Overload重载区别
重载和覆盖是Java多态性的不同表现方式。
覆盖是子类函数覆盖基类函数覆盖一个方法并对其重写以达到不同的作用。
Note 子类中的覆盖方法必须父类中被覆盖的方法有相同的函数名和参数。子类中覆盖方法的返回值必须和父类中被覆盖方法的返回值相同。子类中覆盖方法所抛出的异常类必须和父类中被覆盖方法相同。父类中被覆盖方法不能为private负责子类只是定义了一个新方法而不是覆盖。 重载是通过不同的参数列表来区分如不同的参数个数参数类型参数顺序。
Note 不能通过方法的访问权限、返回值类型抛出异常类型来区分重载。对于继承来说如果父类方法的访问权限为private就不能在子类中对其重载只是新定义的一个方法。 覆盖与重载的区别
1Override是子类与父类之间的关系是垂直关系Overload 是同一个类中方法之间的关系是水平关系。
2覆盖关系中是根据对象的类型决定调用哪个方法父类或子类的重载是根据参数列表的不同决定调用哪个方法。
3覆盖要求参数列表相同重载不同。
4覆盖只能由一个方法或由一对方法产生关系重载是多个方法之间的关系。
3、ArrayList与Vector区别
均在java.util包中均为可伸缩数组可以动态改变长度。两者都是基于存储元素的Object[] array实现的在内存中开辟连续的空间来存储支持用下标访问。ArrayList和Vector都有一个初始化的容量大小当超过时Vector默认扩充为原来的2倍ArrayList默认扩充为原来的1.5倍。
最大区别同步 synchronization的使用ArrayList的方法都不是同步的Vector的大部分方法是同步的add/insert/remove等。Vector是线程安全的提供了线程安全机制因此其性能上要略逊于ArrayListArrayList不是线程安全的。
4、HahMap与HashTable区别待补充
5、类加载器class loader加载类的步骤Java提供的类加载器有
见Tankshttp://blog.csdn.net/gjanyanlig/article/details/6818655
6、阅读程序填空输出有关Java程序初始化顺序static、构造函数
二、数据结构
7、给出前序遍历判断不可能的中序顺序。
8、邻接表给出邻接表写出深度优先广度优先伪代码
见Tankshttps://segmentfault.com/a/1190000002685939
三、操作系统
9、临界区、互斥量、信号量、事件概念Java中怎么实现?
见Thankshttp://blog.csdn.net/vividonly/article/details/6415748 Java中怎么实现?(待解决)
10、进程调度算法有区别适用场合
11、进程的状态有三个基本状态运行、就绪、阻塞 。见http://blog.sina.com.cn/s/blog_7c03bb1f0100wcco.html
12、进程的数据结构
13、实现复数Complex类支持加减 public class ComplexDemo { // main方法 public static void main(String[] a) { Complex b new Complex(2, 5); Complex c new Complex(3, -4); System.out.println(b c b.add(c)); System.out.println(b - c b.minus(c)); System.out.println(b * c b.multiply(c)); System.out.println(b / c b.divide(c)); }
} // Complex类
class Complex { private double m;// 实部 private double n;// 虚部 public Complex(double m, double n) { this.m m; this.n n; } // add public Complex add(Complex c) { return new Complex(m c.m, n c.n); } // minus public Complex minus(Complex c) { return new Complex(m - c.m, n - c.n); } // multiply public Complex multiply(Complex c) { return new Complex(m * c.m - n * c.n, m * c.n n * c.m); } // divide public Complex divide(Complex c) { double d Math.sqrt(c.m * c.m) Math.sqrt(c.n * c.n); return new Complex((m * c.m n * c.n) / d, Math.round((m * c.n - n * c.m) / d)); } public String toString() { String rtr_str ; if (n 0) rtr_str ( m n i ); if (n 0) rtr_str ( m ); if (n 0) rtr_str ( m n i ); return rtr_str; }
}运行结果13、编程线程A不断向队列Queue写数据线程B不断向队列Queue读数据。
已上传至GitHubhttps://github.com/HiSunny/InterviewXianChengQue