当前位置:学习大全 > 职场资料 > 笔试题 > 内容页

最新IT面试笔试题目参考

2022-08-30 10:20:26 admin

  IT面试笔试题目难吗?求职面试时,面试官一般都会问你一些问题,也可能是通过问卷的形式提问,怎么回答才是最好的呢?这里给大家分享一些IT面试笔试题目,希望对大家有所帮助。

  Java多线程面试题:线程并发面试题

  1、Sleep()、suspend()和wait()之间有什么区别?

  Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了interrupt()方法,它将唤醒那个“睡眠的”线程。

  注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方法,使用suspend()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend()容易引起死锁问题。

  object.wait()使当前线程出于“不可运行”状态,和sleep()不同的是wait是object的方法而不是thread。调用object.wait()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用object.notify(),这样将唤醒原来等待中的线程,然后释放该锁。基本上wait()/notify()与sleep()/interrupt()类似,只是前者需要获取对象锁。

  2、什么是线程饿死,什么是活锁?

  当所有线程阻塞,或者由于需要的资源无效而不能处理,不存在非阻塞线程使资源可用。JavaAPI中线程活锁可能发生在以下情形:

  当所有线程在程序中执行Object.wait(0),参数为0的wait方法。程序将发生活锁直到在相应的对象上有线程调用Object.notify()或者Object.notifyAll()。

  当所有线程卡在无限循环中。

  3、什么是Java Timer类?如何创建一个有特定时间间隔的任务?

  java.util.Timer是一个工具类,可以用于安排一个线程在未来的某个特定时间执行。Timer类可以用安排一次性任务或者周期任务。

  java.util.TimerTask是一个实现了Runnable接口的抽象类,我们需要去继承这个类来创建我们自己的定时任务并使用Timer去安排它的执行。

  4、Java中的同步集合与并发集合有什么区别?

  同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发集合的可扩展性更高。

  在Java1.5之前程序员们只有同步集合来用且在多线程并发的时候会导致争用,阻碍了系统的扩展性。

  Java5介绍了并发集合像ConcurrentHashMap,不仅提供线程安全还用锁分离和 内部分区等现代技术提高了可扩展性。

  5、同步方法和同步块,哪个是更好的选择?

  同步块是更好的选择,因为它不会锁住整个对象(当然你也可以让它锁住整个对象)。同步方法会锁住整个对象,哪怕这个类中有多个不相关联的同步块,这通常会导致他们停止执行并需要等待获得这个对象上的锁。

  6、什么是线程池? 为什么要使用它?

  创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。

  为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。

  从JDK1.5开始,Java API提供了Executor框架让你可以创建不同的线程池。比如单线程池,每次处理一个任务;数目固定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)。

  7、Java中invokeAndWait 和 invokeLater有什么区别?

  这两个方法是Swing API 提供给Java开发者用来从当前线程而不是事件派发线程更新GUI组件用的。InvokeAndWait()同步更新GUI组件,比如一个进度条,一旦进度更新了,进度条也要做出相应改变。

  如果进度被多个线程跟踪,那么就调用invokeAndWait()方法请求事件派发线程对组件进行相应更新。而invokeLater()方法是异步调用更新组件的。

  8、多线程中的忙循环是什么?

  忙循环就是程序员用循环让一个线程等待,不像传统方法wait(), sleep() 或 yield() 它们都放弃了CPU控制,而忙循环不会放弃CPU,它就是在运行一个空循环。这么做的目的是为了保留CPU缓存。

  在多核系统中,一个等待线程醒来的时候可能会在另一个内核运行,这样会重建缓存。为了避免重建缓存和减少等待重建的时间就可以使用它了。

  Angular面试题汇总及答案

  1、什么是Angular?

  Angular是基于typescript编程语言的,开源的网络应用开发框架。是由谷歌倡导开发和维护的。它使用简单,功能强大,可以快速搭建前端网络应用。

  它提供了很多非常优秀的功能,比如说声明性的模板,依赖注入,端到端的工具,等等可以为网络应用开发提供便利。

  2、解释Angular 2应用程序的生命周期hooks是什么?

  Angular 2组件/指令具有生命周期事件,是由@angular/core管理的。@angular/core会创建组件,渲染它,创建并呈现它的后代。

  当@angular/core的数据绑定属性更改时,处理就会更改,在从DOM中删除其模板之前,就会销毁掉它。Angular提供了一组生命周期hooks(特殊事件),可以被分接到生命周期中,并在需要时执行操作。

  构造函数会在所有生命周期事件之前执行。每个接口都有一个前缀为ng的hook方法。例如,ngOnint界面的OnInit方法,这个方法必须在组件中实现。

  3、事件发射器如何在Angular 2中工作的?

  Angular 2不具有双向digest cycle,这是与Angular 1不同的。在Angular2中,组件中发生的任何改变总是从当前组件传播到其所有子组件中。如果一个子组件的更改需要反映到其父组件的层次结构中,我们可以通过使用事件发射器api来发出事件。

  简而言之,EventEmitter是在@ angular/core模块中定义的类,由组件和指令使用,用来发出自定义事件。

  4、如何优化Angular 2应用程序来获得更好的性能?

  优化取决于应用程序的类型和大小以及许多其他因素。一般来说,在优化Angular 2应用程序时要考虑以下几点:

  1)考虑AOT编译。

  2)确保应用程序已经经过了捆绑,uglify和tree shaking。

  3)确保应用程序不存在不必要的import语句。

  4)确保应用中已经移除了不使用的第三方库。

  5)所有dependencies 和dev-dependencies都是明确分离的。

  6)如果应用程序较大时,我会考虑延迟加载而不是完全捆绑的应用程序。

  5、什么是Shadow DOM?它如何帮助Angular 2更好地执行?

  Shadow DOM是HTML规范的一部分,它允许开发人员封装自己的HTML标记,CSS样式和JavaScript。Shadow DOM以及其它一些技术,使开发人员能够像标签一样构建自己的一级标签,Web组件和API。总的来说,这些新的标签和API被称为Web组件。Shadow DOM通过提供了更好的关注分离,通过其它的HTML DOM元素实现了更少的样式与脚本的冲突。

  因为shadow DOM本质上是静态的,同时也是开发人员无法访问的,所以它是一个很好的候选对象。因为它缓存的DOM将在浏览器中呈现得更快,并提供更好的性能。

  此外,还可以相对很好地管理shadow DOM,同时检测Angular 2应用的改变,并且可以有效地管理视图的重新绘制。

  6、service怎么使用?

  AngularJS中你可以创建自己的服务,或使用内建服务。

  使用Module的provider方法;

  使用Module的factory方法;

  使用Module的service方法;

  三种方法的比较:

  需要在config中进行全局配置的话,只能选择provider方法,factory和service是使用比较频繁的创建服务的方法。

  它们之间的唯一区别是:service方法用于注入的结果通常是new出来的对象,factory方法注入的结果通常是一系列的functions;

  provider是创建服务最为复杂的方法,除非你需要创建一个可以复用的代码段并且需要进行全局配置,才需要使用provider创建;

  所有具有特定性目的的对象都是通过factory方法去创建。

  7、Angular和Angular js的区别是什么?

  Angular js支持的是mvc设计模型。Angular是基于组件和directives的。

  Angular支持依赖注入,Angular js不支持。

  Angular js的ng directive需要image, 属性和一个事件, angular只需要括号和方括号来绑定数据属性和事件就可以了 。

  Angular js不支持移动设备的开发。Angular 支持手机开发。

  Angular js的首推语言是JavaScript。Angular的首推语言是type script.

  路径设置上,angular js使用的是route provider。Angular使用的是route config.

  在开发速度上,Angular要快于Angular js。

  在运行速度上,angular也要快于angular js。

  Angular的整个程序的架构比angular js更清晰,更简单,更容易维护。

  目前Angular js已经没有官方的维护和更新支持了。Angular官方维护和更新都做得很好。

  8、Angular的核心部件有哪些?

  共有9个,一个是components,另外一个是data binding,再一个是dependency injection, 然后是directives,再就是metadata,然后是modules,再就是routing,还有services,最后一个是template。

  9、什么是数据绑定?在Angular中有几种方式?

  连接程序中的数据跟视图的方式称为数据绑定。

  一共有三种方式。一种是事件绑定,这种方式使得应用程序可以对用户的输入做出反应。另一种是属性绑定。这种方式是从应用数据向html传递数据。最后一种方式是双向绑定。这种绑定可以支持用程序数据的修改影响视图,同时视图上数据的改动也会影响到应用程序的数据。

  10、Angular中有哪些事件?

  click, copy, cut, dbclick, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseover, mouseup, blur.

  史上最全Database工程师题库

  1、 查询Student表中的所有记录的Sname、Ssex和Class列。

  2、 查询教师所有的单位即不重复的Depart列。

  3、 查询Student表的所有记录。

  4、 查询Score表中成绩在60到80之间的所有记录。

  5、 查询Score表中成绩为85,86或88的记录。

  6、 查询Student表中“95031”班或性别为“女”的同学记录。

  7、 以Class降序查询Student表的所有记录。

  8、 以Cno升序、Degree降序查询Score表的所有记录。

  9、 查询“95031”班的学生人数。

  10、查询Score表中的最高分的学生学号和课程号。

  11、查询‘3-105’号课程的平均分。

  12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。

  13、查询最低分大于70,最高分小于90的Sno列。

  14、查询所有学生的Sname、Cno和Degree列。

  15、查询所有学生的Sno、Cname和Degree列。

  16、查询所有学生的Sname、Cname和Degree列。

  17、查询“95033”班所选课程的平均分。

  18、假设使用如下命令建立了一个grade表:

  create table grade(low number(3,0),upp number(3),rank char(1));

  into grade values(90,100,’A’);

  into grade values(80,89,’B’);

  into grade values(70,79,’C’);

  into grade values(60,69,’D’);

  into grade values(0,59,’E’);

  commit;

  现查询所有同学的Sno、Cno和rank列。

  19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。

  20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。

  21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。

  22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

  23、查询“张旭“教师任课的学生成绩。

  24、查询选修某课程的同学人数多于5人的教师姓名。

  25、查询95033班和95031班全体学生的记录。

  26、查询存在有85分以上成绩的课程Cno.

  27、查询出“计算机系“教师所教课程的成绩表。

  28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。

  29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。

  30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.

  结尾:非常感谢大家阅读《最新IT面试笔试题目参考》,更多精彩内容等着大家,欢迎持续关注学习大全网,一起成长!

[笔试题]相关文章
[笔试题]图文精华
上一篇:
下一篇: