神舟数码软件公司面试题整理:逻辑操作与条件操作对比

3星 · 超过75%的资源 需积分: 26 21 下载量 105 浏览量 更新于2024-11-18 收藏 57KB DOC 举报
"这是一份关于神舟数码软件公司面试的笔试题目集合,包含了多个Java相关的技术问题,涉及逻辑操作、接口与类的交互、Web开发基础、并发控制以及EJB规范等内容。" 1. 逻辑操作(&, |, ^)与条件操作(&&, ||)的主要区别在于它们的运算级别和返回值类型。逻辑操作符(&, |, ^)对操作数进行真值判断,并返回一个布尔值结果。其中,& 和 | 是按位操作符,适用于整型数值,处理二进制位;^ 是异或操作符,两个操作数相同则结果为0,不同则为1。而在布尔逻辑中,&& 和 || 是短路操作符,它们只会在必要时计算第二个操作数,&& 左边为假则不计算右边,|| 左边为真则不计算右边。 2. 关于程序的运行结果,由于接口A中的x是默认的public static final 常量,而类B中的x是实例变量,两者在类C中冲突。因此,编译器会报错,为了解决这个问题,可以在接口A中将x声明为default,或者在类B或C中重命名变量x。 3. JavaServerPage (JSP) 和 Servlet 的联系:JSP是Servlet的一种简化,提供了更方便的视图层开发。它们都是用于构建动态Web应用的技术,Servlet是服务器端的Java程序,负责处理请求和响应,而JSP侧重于页面展示,可以包含HTML、CSS和Java代码,JSP最终会被转换成Servlet执行。区别在于,JSP更注重分离表现层和业务逻辑,Servlet更适合处理复杂逻辑。 4. XML文档定义有两种形式:DTD(Document Type Definition)和XML Schema。DTD使用实体和元素声明来定义XML文档结构,较简单但功能有限。XML Schema使用XML语法定义,提供更强的数据类型支持和更复杂的结构约束。解析XML文档的方式包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML),DOM一次性加载整个文档到内存,适合小型文档;SAX事件驱动,逐行读取,节省内存,适合大型文档;StAX介于两者之间,允许流式处理,可读写XML。 5. synchronized和Lock(如ReentrantLock)都用于线程同步,确保同一时间只有一个线程访问特定代码段。synchronized是内置关键字,自动释放锁,易于使用,但粒度较粗。Lock提供了更细粒度的控制,如显式获取和释放锁,支持尝试加锁、可中断等待和公平锁等特性,但使用时需谨慎避免死锁。 6. EJB(Enterprise JavaBeans)规范中禁止的操作包括:在EJB的方法中抛出未经检查的异常(如NullPointerException、IllegalArgumentException等),直接访问Servlet的HttpSession,执行阻塞I/O操作,使用静态方法或静态变量存储状态,以及进行过多的计算或数据处理,这些都可能影响应用的性能和可扩展性。 最后,关于toString()方法的实现,原实现直接将对象引用和hashCode拼接,可能导致无限递归的问题。当对象调用toString()时,它会调用自身,然后再次调用hashCode(),导致无限循环。修改后的版本通过valueOf()方法避免了这个问题,但若对象未重写toString(),valueOf()内部仍会调用toString(),形成循环。正确的做法是提供有意义的toString()实现,如显示对象的关键属性。