Advertisement

记25-27 趋势 凯易讯 IBM的几道面试/笔试题

阅读量:

1 进程和线程区别(趋势&IBM)

我发现这个题目的出现频率显著提高。我做了些归纳总结:针对这一问题,我可以采取多方面的分析。

在引入线程的操作系统架构中,在调度和分派层面采用线程作为基本单位,在资源所有权层面则以进程为基本单元。将传统进程的职责区分为资源分配与管理功能两部分,并使线程避免直接控制资源,在这种安排下使得线程能够负担更轻地运行,并因此显著提升了系统的多任务处理能力

b 资源分配的角度:从操作系统的角度来看,在这种架构中将一个进程视为操作系统中拥有资源的一个基本单位具有重要意义。通常情况下线程不具备独立拥有资源的能力但可以通过访问所属进程的相关资源来实现对这些资源的使用例如已打开的文件以及相关的I/O设备等这些都可以被该进程的所有子线程共享使用以满足多任务处理的需求

现代操作系统通过引入多线程设计后,在多任务处理方面展现出显著的优势。不仅不同进程之间可以通过并行处理提升整体性能,并且在一个进程内部的不同线程也可以同时运行以充分利用硬件资源。这种设计使得操作系统的并发性得到了显著增强,并实现了对系统资源利用效率和吞吐能力的有效提升。

现代操作系统通过引入多线程设计后,在多任务处理方面展现出显著的优势。不仅不同进程之间可以通过并行处理提升整体性能,并且在一个进程内部的不同线程也可以同时运行以充分利用硬件资源。这种设计使得操作系统的并发性得到了显著增强,并实现了对系统资源利用效率和吞吐能力的有效提升。

d 系统资源消耗的角度:每当创建或撤销一个进程时都需要生成相应的进程控制块,并完成相关资源释放(内存空间、I/O设备等),这些操作共同构成了较高的系统资源消耗成本。相比之下,在进行进程中断并重新调度相关作业的过程中,则不仅涉及当前作业运行环境数据备份这一项基础操作(即CPU环境数据备份),还需要完成新作业运行环境的数据设置工作(即新作业进入执行状态前的状态准备)。因此从切换效率的角度来看,在任务调度机制上存在显著差异:相比传统多线程技术中的轻量级上下文切换方式(仅需维护少量寄存器信息即可完成上下文转换),多任务态下的系统级上下文转移过程需要投入大量的计算资源以完成相关的状态复制与重建工作

这边也有一篇总结的帖子:http://www.cnblogs.com/flashsky/articles/642720.html

2 进程间通信机制,线程与线程的通信机制(趋势)

进程:a共享内存 b消息传递 c管道通信(基于文件) d锁(可算可不算,一般不用)

线程:a全局变量 b自定义消息 c event对象

3 java的内存分配机制(凯易讯)

4 object类里面有哪些函数(IBM)

此文章发表于作者的个人博客上

5 聚合和组合的区别(IBM)

http://www.cnblogs.com/confach/archive/2005/03/03/112117.html

6 重载和覆盖还有函数隐藏分别是什么意思

7 输入一个数字N,输出小于它的N个正整数的全排列

比如说输入3,输出1,2,3,1 2,1 3,2 3,1 2 3

复制代码
 #include<iostream>

    
 using namespace std;
    
  
    
  
    
 int compare(const void* a,const void* b)
    
 {
    
 	return *(int *)a - *(int *)b;
    
 }
    
  
    
 void recursiveOutput(int* prefix,int preNumber,int level,int n)
    
 {
    
 	for(int i=0;i<level;i++)
    
 		cout<<prefix[i];
    
 	cout<<endl;
    
  
    
 	if(level == n)
    
 		return;
    
  
    
 	for(int i=preNumber+1;i < n;i++)
    
 	{
    
 		prefix[level] = i;
    
 		recursiveOutput(prefix,i,level+1,n);
    
 	}
    
 }
    
  
    
  
    
 void output(int n)
    
 {
    
 	int* prefix = new int[n];
    
 	recursiveOutput(prefix,0,0,4);
    
 }
    
  
    
 int main()
    
 {
    
  
    
 	int numbers[] = {1,2,3};
    
 	output(3);
    
 	return 0;
    
 }

8多线程下的单例模式

复制代码
 public class Singletton

    
 {
    
 	private static Singletton uniqueInstance;
    
 	
    
 	private Singletton()
    
 	{
    
 		
    
 	}
    
 	
    
 	public static Singletton getSingleton()
    
 	{
    
 		if(uniqueInstance==null)
    
 		{
    
 			synchronized(Singletton.class)
    
 			{
    
 				if(uniqueInstance==null)
    
 					uniqueInstance = new Singletton();
    
 			}
    
 		}
    
 			
    
 		return uniqueInstance;
    
 	}
    
 }

9 什么是checked exception什么是unchecked exception

该文章位于

10常见的RunTimeException都有哪些

该网页详细介绍了如何利用改进型K-Means聚类算法对中文新闻数据集进行高效聚类分析,并深入探讨了算法在不同参数设置下的性能表现及其适用场景

全部评论 (0)

还没有任何评论哟~