高级开发人员架构师面试题
- 格式:doc
- 大小:21.00 KB
- 文档页数:3
java 架构师面试题Java 架构师是一个在软件开发和系统设计方面拥有深厚经验和知识的专家。
他们在设计和开发大型应用程序时负责制定技术架构,优化性能,确保系统安全并满足业务需求。
担任Java 架构师一职需要掌握广泛的技术知识和经验,因此在面试过程中,一些特定的问题会被提出来评估候选人的能力。
以下是一些常见的Java 架构师面试题。
1. 解释什么是分布式系统,并列举一些常见的分布式系统应用。
分布式系统是由多个独立的计算机和软件组件组成的系统,这些组件通过网络相互交互并协同工作。
常见的分布式系统应用包括电子商务网站、社交媒体平台、云计算服务和大数据处理系统等。
2. 请解释Java虚拟机(JVM)是什么,以及它在Java 应用程序中的作用。
Java虚拟机(JVM)是Java平台的关键组成部分,它负责解释和执行Java字节码,提供跨平台性。
它在Java应用程序中的作用是将Java源代码编译成中间字节码,然后在特定的操作系统和硬件上执行。
3. 请解释什么是垃圾回收器(Garbage Collector),以及它在Java中的作用。
垃圾回收器(Garbage Collector)是Java虚拟机的一部分,它负责自动管理内存。
它的主要作用是在程序执行过程中自动回收不再使用的内存,以避免内存泄漏和提高应用程序的性能。
4. 请解释Java的线程池是什么,以及它的优势。
Java的线程池是一种管理线程的机制,它包含了一组可重用的线程,可以通过将任务提交给线程池来执行。
它的优势包括线程的重用,减少线程创建和销毁的开销,以及更好的控制并发执行的线程数量。
5. 请解释Java中的反射(Reflection)是什么,以及它的应用场景。
反射(Reflection)是指在运行时动态获取和操作类的信息。
通过反射,可以在编译时不知道类的具体信息的情况下,通过类的名称获取到类的构造方法、字段和方法等信息,并进行操作。
它的应用场景包括编写通用的代码处理框架和动态加载类等。
系统架构师面试题及答案在当今数字化的时代,系统架构师在软件开发和技术领域中扮演着至关重要的角色。
他们负责设计、构建和维护复杂的技术系统,确保其高效、可靠和可扩展。
以下是一些常见的系统架构师面试题及答案,希望能对您有所帮助。
一、请简要描述您对微服务架构的理解,以及它与单体架构的主要区别。
答案:微服务架构是一种将单个应用程序拆分成多个小型服务的架构风格。
每个服务都可以独立部署、扩展和维护,并且通过轻量级的通信机制(如 HTTP API)进行交互。
与单体架构相比,主要区别在于:1、可扩展性:微服务架构可以针对单个服务进行扩展,而单体架构往往需要整体扩展。
2、开发敏捷性:微服务允许不同的团队独立开发和部署各自的服务,提高了开发效率。
3、技术选型灵活性:每个微服务可以根据其需求选择合适的技术栈。
4、容错性:某个微服务的故障不会导致整个系统崩溃。
二、在设计高并发系统时,您会考虑哪些关键因素?答案:在设计高并发系统时,以下是一些关键因素:1、缓存策略:使用缓存(如 Redis)来减少对后端数据库的访问压力,提高响应速度。
2、数据库优化:包括合理的索引设计、分库分表、读写分离等。
3、负载均衡:通过硬件或软件负载均衡器将流量均匀分配到多个服务器上。
4、异步处理:对于非关键路径的操作采用异步方式,减少阻塞。
5、资源限制和监控:设置合理的资源限制,如内存、CPU 等,并进行实时监控和告警。
三、谈谈您对分布式事务的理解,以及常见的解决方案。
答案:分布式事务是指在分布式系统中,涉及多个节点或服务的事务操作。
由于数据可能分布在不同的节点上,传统的单机事务处理方式不再适用。
常见的解决方案包括:1、两阶段提交(2PC):分为准备阶段和提交阶段,但存在单点故障和性能问题。
2、三阶段提交(3PC):在 2PC 的基础上进行改进,减少了阻塞的可能性。
3、 TCC(TryConfirmCancel):通过业务层面的预留、确认和取消来实现事务。
选择题
在设计软件架构时,以下哪项原则最有助于提升系统的可维护性?
A. 开闭原则
B. 依赖倒置原则
C. 高内聚,低耦合(正确答案)
D. 接口隔离原则
关于微服务架构,下列说法错误的是?
A. 每个微服务独立部署,互不干扰
B. 微服务之间通过轻量级通信机制交互
C. 微服务架构适用于所有规模的项目,无论大小(正确答案)
D. 微服务有助于实现技术的多样性
关于云原生架构,下列哪项不是其核心特征?
A. 容器化包装
B. 自动化运维
C. 单体应用为主(正确答案)
D. 持续交付与部署
在设计分布式系统时,为了解决数据一致性问题,以下哪种策略倾向于牺牲一致性来保证可用性?
A. Paxos算法
B. Raft算法
C. 最终一致性(正确答案)
D. 两阶段提交
关于RESTful API设计,下列哪项不符合其最佳实践?
A. 使用名词表示资源
B. 对资源使用正确的HTTP方法
C. 在URL中包含动词表示操作(正确答案)
D. 使用状态码表示操作结果
在选择数据库类型时,对于需要高并发读写且数据结构不固定的场景,优先考虑?
A. 关系型数据库
B. NoSQL数据库(正确答案)
C. 内存数据库
D. 图数据库
关于DevOps文化,以下哪项不是其核心价值观?
A. 持续改进
B. 快速交付
C. 团队间隔离(正确答案)
D. 自动化一切可以自动化的
在实现系统高可用性时,以下哪种技术主要用于故障转移和恢复?
A. 负载均衡
B. 心跳检测与故障切换(正确答案)
C. 数据分片
D. 缓存机制。
java 架构师面试题Java 架构师面试题一、引言Java 架构师一直是软件开发领域中备受瞩目的职位,担任这一职位的人需要具备广泛的知识和经验,以及深入的理解关键技术和架构原则。
本文将提供一些常见的 Java 架构师面试题,通过这些问题,我们可以了解求职者的技术水平和思维方式。
二、面试题目1. 请解释什么是 Java 中的设计模式,并举例说明其中的几个。
2. 请阐述 Java 中的 MVC 架构模式,并举例说明其在实际项目中的应用。
3. 请解释什么是面向对象编程(OOP),并列举几个面向对象的原则。
4. 请解释什么是依赖注入(Dependency Injection),以及它在 Java 应用程序中的作用。
5. 请解释什么是 RESTful 架构风格,并举例说明如何实现一个RESTful API。
6. 请解释什么是微服务架构(Microservices),并讨论其与传统的单体应用架构的区别。
7. 请解释什么是容器化(Containerization),以及为什么容器化技术如 Docker 在现代应用开发中如此受欢迎。
8. 请阐述 Java 中的线程池(ThreadPool)的概念和用途,并解释其中的核心参数。
9. 请解释什么是高可用性架构(High Availability Architecture),并列举几种实现高可用性的技术手段。
10. 请解释什么是负载均衡(Load Balancing),以及它在分布式系统中的作用。
11. 请解释什么是缓存(Caching),以及如何在 Java 应用程序中使用缓存提高性能。
12. 请阐述数据库水平扩展(Horizontal Scaling)和垂直扩展(Vertical Scaling)的概念和区别。
13. 请解释什么是消息队列(Message Queue),以及它在分布式系统中的作用。
14. 请解释什么是服务发现(Service Discovery),以及为什么服务发现在微服务架构中非常重要。
java架构师面试题一、面试题目简介本文主要介绍Java架构师面试题,包括面试题目内容、解析和答案等方面,帮助读者了解和准备相关面试内容。
二、面试题目内容1. 请简述什么是Java架构师?Java架构师是指在Java应用程序开发中,负责设计整体架构,并提出高效可靠的解决方案的专业人员。
他们需要具备扎实的Java编程基础、广泛的技术知识和丰富的项目经验。
2. 你认为一名优秀的Java架构师应该具备哪些技能和素质?优秀的Java架构师应该具备以下技能和素质:- 扎实的Java基础知识和编程能力;- 深入理解面向对象的设计原则和设计模式;- 熟悉多线程、并发编程和性能优化;- 具备数据库设计和优化的能力;- 熟悉分布式系统设计和微服务架构;- 具备架构设计和项目管理能力;- 良好的沟通能力和团队合作精神;- 不断学习和探索新技术的能力。
3. 请描述常见的Java设计模式,并简要解释其应用场景。
常见的Java设计模式包括:- 单例模式:用于确保一个类只有一个实例,并提供全局访问点。
- 工厂模式:用于创建对象,隐藏具体实现细节,通过接口或抽象类与客户端进行交互。
- 观察者模式:用于处理对象之间的一对多依赖关系,当一个对象状态发生改变时,通知依赖它的对象。
- 适配器模式:用于转换接口,将一个类的接口转换成客户端期望的接口。
- 装饰器模式:用于动态地添加对象的新功能,同时不改变其原有结构。
- 模板方法模式:定义一个操作的骨架,将一些步骤延迟到子类中实现。
这些设计模式在不同的场景中应用,能够提高代码的可维护性、扩展性和重用性。
4. 请简述分布式系统的特点和挑战。
分布式系统的特点包括:- 多节点:系统由多个节点组成,节点之间通过网络进行通信。
- 并发性:多个节点或进程同时执行任务,可以充分利用资源。
- 透明性:用户无需关心分布式系统的具体实现细节。
- 容错性:系统可以容忍节点的故障和网络的延迟。
分布式系统面临的挑战包括:- 数据一致性:节点之间的数据同步和更新存在延迟和冲突的问题。
高级研发工程师岗位面试题及答案1.请介绍一下您过去的研发项目经验。
答:我在过去的项目中领导了多个研发项目,例如,最近一次我负责开发了一款高性能的图像处理引擎,用于实时视频流的实时分析。
我们采用了并行计算和GPU加速等技术,实现了快速的图像处理,并成功优化了处理时间,从而在医疗诊断领域取得了显著的成果。
2.请详细描述一次您在解决复杂技术难题时的经历。
答:在之前的项目中,我们遇到了一个性能瓶颈,导致系统无法在高负载情况下保持稳定。
经过深入分析,我发现问题出现在数据存取和内存管理方面。
通过优化算法,重新设计数据结构,并进行内存分析,我们最终解决了这个难题,系统的性能得以显著提升。
3.在跨团队合作中,您是如何确保有效的沟通和协调的?答:我在多个项目中与不同团队合作,通常我会定期组织跨团队会议,确保每个成员都能了解整体进展并分享各自的问题和发现。
同时,我注重倾听和尊重团队成员的意见,确保每个人都能够充分参与并做出贡献。
4.请谈谈您在软件架构方面的经验,以及如何权衡不同的设计选择。
答:在设计软件架构时,我通常会首先分析系统需求,然后权衡各种设计选项,考虑因素包括可维护性、可扩展性、性能和安全性等。
例如,之前我在一个金融项目中,选择了微服务架构,以支持系统的模块化和快速迭代。
5.请分享一次您带领团队成功交付项目的经验。
答:我曾领导一个团队开发一款复杂的智能家居控制系统。
我设定了清晰的项目目标和里程碑,将任务细分并分配给团队成员。
通过定期的进展评审和风险管理,我们及时发现问题并采取措施。
最终,我们按时交付了功能完备且稳定的系统,得到了客户的高度评价。
6.如何在项目开发过程中处理紧急情况或项目变更?答:在项目中,变更是不可避免的。
我会首先评估变更的影响,然后与团队共同商讨最佳解决方案。
如果涉及重大决策,我会与相关利益相关者进行充分沟通,确保所有人都理解和接受变更。
7.请谈谈您对持续集成和持续交付(CI/CD)的理解和应用。
软考高级架构师系统设计40题1. In a system design, which of the following is the most important consideration for scalability?A. Hardware performanceB. Software architectureC. Network bandwidthD. User interface design答案:B。
解析:软件架构对于系统的可扩展性至关重要。
硬件性能在一定程度上影响,但不是最关键的。
网络带宽主要影响数据传输,对可扩展性的直接影响较小。
用户界面设计与系统的可扩展性关系不大。
2. When designing a system, which principle should be followed to ensure high availability?A. RedundancyB. Minimization of componentsC. Simple architectureD. Low cost答案:A。
解析:冗余是确保高可用性的重要原则。
减少组件可能会降低复杂性,但不一定能保证高可用性。
简单架构有助于理解和维护,但不是保证高可用性的关键。
低成本通常不是高可用性设计的首要考虑因素。
3. Which of the following is a key factor in determining theperformance of a system?A. The number of usersB. The algorithm usedC. The color scheme of the interfaceD. The brand of the hardware答案:B。
解析:算法的优劣直接决定了系统的性能。
用户数量会影响系统负载,但不是决定性能的根本因素。
界面的颜色方案与性能无关。
硬件品牌对性能有一定影响,但算法的影响更为关键。
系统架构师常见面试题在当今科技飞速发展的时代,系统架构师在企业的技术领域中扮演着至关重要的角色。
他们负责设计、构建和维护复杂的系统架构,以确保系统的高效、稳定和可扩展性。
因此,在招聘系统架构师时,面试环节通常会涉及一系列具有挑战性的问题,以评估候选人的技术能力、经验和解决问题的思维方式。
以下是一些常见的系统架构师面试题:一、技术基础和原理1、请简要介绍一下常见的分布式系统架构模式,例如主从模式、对等模式和分布式哈希表(DHT),并说明它们的优缺点。
这道题旨在考察候选人对分布式系统基本架构模式的理解和掌握程度。
主从模式具有易于管理和控制的优点,但存在单点故障的风险;对等模式具有高容错性和可扩展性,但协调和管理相对复杂;DHT 则在大规模分布式系统中表现出色,但其实现和维护较为复杂。
2、谈谈你对数据库索引的理解,包括 B 树索引、哈希索引和位图索引的工作原理及适用场景。
数据库索引是提高数据库查询性能的关键。
B 树索引适用于范围查询和排序操作;哈希索引适用于等值查询,但不支持范围查询;位图索引则在处理低基数列和大量重复值时效率较高。
3、解释一下什么是 CAP 定理,并阐述在实际系统设计中如何权衡一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。
CAP 定理指出在分布式系统中,最多只能同时满足这三个特性中的两个。
在实际设计中,需要根据系统的需求和业务场景来决定侧重哪两个特性。
例如,对于金融交易系统,可能更注重一致性和可用性;而对于大规模的社交网络,可能会更倾向于可用性和分区容错性。
二、系统设计与架构1、假设要设计一个高并发的电商网站,你会如何考虑系统的架构?包括前端、后端、数据库和缓存等方面。
对于前端,要考虑使用 CDN 加速静态资源的加载,采用响应式设计以适应不同设备;后端可以采用微服务架构,将不同的功能模块拆分成独立的服务;数据库要进行读写分离和分库分表以应对高并发读写;缓存可以使用 Redis 来存储热门商品和用户频繁访问的数据。
架构师面试题 -常见的数据结构与算法 数组(共30题,含答案)1.矩阵中的⾏列数可以是不相等的,这样的说法正确吗?A.正确B.不正确2.对矩阵压缩存储是为了A.⽅便运算B.⽅便存储C.提⾼运算速度D.减少存储空间3.⼀维数组与线性表的区别是A.前者⻓度固定,后者⻓度可变B.后者⻓度固定,前者⻓度可变C.两者⻓度均固定D.两者⻓度均可变4.在以下的叙述中,正确的是A.线性表的顺序存储结构优于链表存储结构B.⼆维数组是其数据元素为线性表的线性表C.栈的操作⽅式是先进先出D.队列的操作⽅式是先进后出5.顺序存储⽅式插⼊和删除时效率太低,因此它不如链式存储⽅式好。
A.TB.F6.数组是⼀种线性结构,因此只能⽤来存储线性表A.对B.错7.设有⼀个⼆维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占⼀个空间,问A[3][3](10)存放在什么位置?脚注(10)表示⽤10进制表示A.688B.678C.692D.6968.定义了⼀维int 型数组a[10] 后,下⾯错误的引⽤是A.a[0] = 1;B.a[0] = 5*2;C.a[10] = 2;D.a[1] = a[2] * a[0];9.在⼀个⻓度为n的顺序表中删除第i个元素,要移动_______个元素。
如果要在第i个元素前插⼊⼀个元素,要后移_________个元素。
A.n-i,n-i+1B.n-i+1,n-iC.n-i,n-iD.n-i+1,n-i+110.已知10*12 的⼆维数组A ,以⾏序为主序进⾏存储,每个元素占1 个存储单元,已知A[1][1] 的存储地址为420 ,则A[5][5] 的存储地址为A.470B.471C.472D.47311.取线性表的第i个元素的时间同i的⼤⼩有关。
A.TB.F12.若要定义⼀个具有5 元素的整型数组,以下错误的定义语句是A.int a[5] = {0};B.int a[] = {0, 0, 0, 0, 0};C.int a[2+3];D.int i = 5, a[i];13.⻓度为n 的⾮空顺序表,若在第i个位置插⼊新的元素X,则i的取值范围是1≤i≤n+1,需要移动的元素个数为A.iB.n-i-1C.n-iD.n-i+114.设有⼀个10阶的对称矩阵A,采⽤压缩存储⽅式,以⾏序为主存储,a11为第⼀元素,其存储地址为1,每个元素占⼀个地址空间,则a85的地址为A.13B.33C.18D.4015.设⼀维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为A.O(n)B.O(nlog2n)C.O(1)D.O(n2)16.定义语句"double * array [8]"的含义正确的是A.array是⼀个指针,它指向⼀个数组,数组的元素时是双精度实型B.array是⼀个数组,数组的每⼀个元素是指向双精度实型数据的指针CC语⾔中不允许这样的定义语句D.以上都不对17.有⼀个⽤数组C[1..m]表示的环形队列,m为数组的⻓度。
第1篇一、基础知识与理论1. 请简述企业架构(EA)的定义和作用。
2. 解释TOGAF架构框架的核心概念和组成部分。
3. 描述业务流程建模(BPM)的基本原理和步骤。
4. 解释IT战略规划的定义和重要性。
5. 举例说明企业架构中的“当前状态”和“目标状态”。
6. 解释架构原则的概念,并举例说明。
7. 如何确保IT项目与业务目标对齐?8. 描述系统集成的概念和重要性。
9. 请描述企业架构师在项目中的角色和职责。
10. 解释IT治理的定义和作用。
二、系统设计与开发1. 请简述分布式系统的概念和设计原则。
2. 描述微服务架构的优势和挑战。
3. 解释RESTful API的设计原则。
4. 请简述数据库选型的考虑因素和常用数据库类型。
5. 描述缓存技术的原理和应用场景。
6. 如何设计高可用性和可扩展性的系统?7. 请简述系统安全确保措施,如访问控制、数据加密等。
8. 解释负载均衡的原理和实现方式。
9. 请简述日志管理和监控的重要性。
10. 描述DevOps的概念和实施方法。
三、架构设计1. 请简述架构设计的基本原则和流程。
2. 描述架构设计中的分层原则。
3. 如何评估和选择合适的架构风格?4. 请简述架构设计中的性能优化方法。
5. 如何进行架构风险评估和管理?6. 请简述架构设计中的可维护性和可扩展性原则。
7. 如何进行架构设计与团队协作?8. 请简述架构设计中的持续集成和持续部署(CI/CD)。
9. 如何进行架构设计中的文档编写和版本控制?10. 请简述架构设计中的需求分析和需求管理。
四、技术选型与评估1. 请简述技术选型的原则和流程。
2. 如何评估和比较不同技术方案的优缺点?3. 请简述开源软件与商业软件的优缺点。
4. 如何评估技术的成熟度和稳定性?5. 描述技术选型中的风险评估和管理。
6. 请简述技术选型中的成本效益分析。
7. 如何进行技术选型中的团队协作?8. 请简述技术选型中的项目管理。
9. 如何进行技术选型中的需求分析?10. 请简述技术选型中的知识积累和经验传承。
高级开发人员架构师面试题此文中所提到的面试题是园子中Tony Qu兄弟翻译过来的,特此感谢高级开发人员/架构师1 有问题,当myString丌能满足时间格式要求的时候,会引发异常,建议使用 2PDB PDB 是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
3 cyclomatic complexity 丌知道,望指教 4 lock private static object instrace static object lockedObj new object public static void LockTest if instrace null lock lockedObj if instance null instance new object 5 FullTrustGACassemblyFullTrust FullTrust完全信任。
放入GAC中的Assembly是否FullTrust我的理解丌是。
我理解FullTrust是可以通过代码设定的 6 可以更加灵活的设置对代码的访问权限,实现代码级保护。
这点丌是特清楚,有明白的给讲解下 7 gacutil /l find /i Corillian 全局程序集缓存中如果有Corillian就更新该程序集,没有就安装8 sn -t 显示程序集的公钥标记 9 DCOM135 135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下DCOM丌能穿越防火墙。
因为根本丌晓得开哪个端口。
但有解决办法可以使DCOM分配的端口号固定,有关内容我在有过一些描述。
135是远程过程调用RPC的默认端口 10OOPSOA 我想OOP和SOA应该没有对比性吧。
OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。
而SOA是一个技术框架,技术框架和编程模型应该说丌是一码事吧SOA的思想是将业务逻辑封装成服务戒者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。
11 XmlSerializerACL 我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。
应该至少需要ACL权限中的读权限. 12catchException 原因可能有两点:1)try..catch在出现异常的时候影响性能 2)应该捕获更具体得异常,比如IOExeceptionOutOfMemoryException等是调试的时候向跟踪窗口输出信息。
当编译模式为debug的时候才有效,为release的时候在编译的时候会忽略而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。
14Debug BuildRelease Build Debug会产生pdb文件,release丌会。
Debug用于开发时的调试,丌能要于部署,而release用于部署.debug编译一些特殊代码,比如IFDEBUG 等,而Release则会将那些特殊标记省略 15JITassembly 方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并丌会被使用,此时CLR 傻乎乎的给整个程序集都给Compile了,CLR丌是傻疯了么 16 抽象类能有具体实现,而接口只定义行为规范,丌能有具体实现。
一个类只能继承一个父类,但能实现多个接口。
b 丌一样。
多数情况下,表示a不b一致, ab表示a不b的值相等。
也可以有具体重载(多谢Jeffrey Zhao 的指正) 18 对象一致是指两个对象是同一个对象,引用相同。
而对象相等是指两个对象的值相同,但引用丌一定相同 copy 实现IClonable接口 20IClonable IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。
深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。
而Shadow复制则丌同,是浅表复制,丌重新创建新实例。
浅表复制的实现是. public class Name public string FirstName public string LastName public class Person:ICloneable public Name PersonName public string Email you need to check the instance object equal to NULL before and after LOCK statement. Its more important to think about why we need double-check pattern and all these relations with singleton pattern.5. GAC has nothing to do with runtime security permissions 14. I agree that its worthy to be considered the differences bewteen and Equals happen on the polymorphism characteristic. Topic can be expanded to value/reference equlity or identity and attentions of using both overridesetc. 回复引用查看 13楼 2008-02-29 22:22 呵呵呵未注册用户仍需努力哦回复引用查看 14楼 2008-03-01 00:21 工业酒精有些问题的答案还是有问题的。
我只是在想,针对.Net的高级开发人员或者是构架师,这些题目是否就真的能够衡量其水平,我有些怀疑。
这也是工作中,实际遇到的问题,到底怎么样的题目,能考核多个方面,同时有恰如其分的深度。
回复引用查看 15楼 2008-03-01 08:40 金色海洋(jyk)现在面试都靠这些了,惨了,都不会了。
回复引用查看 16楼楼主 2008-03-01 08:56 jillzhang 工业酒精请把有问题的指出来,这样才有意义,我说了也不是标准答案。
回复引用查看 17楼 2008-03-01 09:22 毁于随高级的有一半都不会或者没有听过或者不确定..... 回复引用查看 18楼 2008-03-01 10:20 Silent Void 学习了,谢谢: 顺便提几点: 2 Windbg中,PDB可以放在系统的Path环境变量下,猜想“放在和对应应用程序集相同目录。
”不是一个必要条件...瞎猜的/: 4 lock的写法不太正确,考虑如下情况:调用两次LockTest函数,则每个函数内部都会构造一个lockObj来Lock,所以这时的Lock除了增加冗余代码外,没有任何作用。
一般是定义private对象来Lock 或Lock一个private static对象变量来保护所有实例所共有的数据; 6 猜想是在方法上应用权限相关的Attribute...瞎猜的/: 14 Release相比Debug,做了更多的优化以提高运行性能。
举一个例子:在一个方法执行到一半代码这个时间点上,GC应该可以检测到前半部分代码中构造的部分对象没有用了,但在Debug模式下,它不会回收这些对象,而在Release模式下,它可能会回收这些对象。
这只是一个例子,应该还有很多其他的优化,如冗余代码、循环优化等,毕业出来半年,编译原理都都忘光了...汗... 16 引用框架书中的说法:类继承基类表达的是一种“IS-A”的关系,而类继承接口表达的是一种“Can-Do”的约束。
另外,正是“抽象类能有具体实现,而接口只定义行为规范,不能有具体实现”,则子类在继承基类时,可以继承并重用基类的实现,这样做的好处是减轻构造子类的负担,带来的副作用是增加了父类和子类的耦合。
17 要看a的类型定义中,有没有重写Equals方法和重载操作符。
回复引用查看 19楼楼主 2008-03-01 10:37 jillzhang 2 Windbg 中,PDB可以放在系统的Path环境变量下,猜想“放在和对应应用程序集相同目录。
”不是一个必要条件...瞎猜的/: ------------------------------------------------- 默认的是同一目录,ide还可以设置全局pdb symbol文件的地址,这也是vs2008能调试framework source code的方法。
还可以解决方案指定pdb位置回复引用查看 20楼楼主 2008-03-01 10:39 jillzhang 4 lock的写法不太正确,考虑如下情况:调用两次LockTest 函数,则每个函数内部都会构造一个lockObj来Lock,所以这时的Lock除了增加冗余代码外,没有任何作用。
一般是定义private对象来Lock 或Lock一个private static对象变量来保护所有实例所共有的数据; ----------------------- 我的确写错了回复引用查看 21楼楼主 2008-03-01 10:44 jillzhang 17 要看a的类型定义中,有没有重写Equals 方法和重载操作符。
----------------------------------------------------------- 重写的应该不在这道题的考察范围之内,要不就没有绝对答案了。
你给个应该根据重写来判断等于没说,因为任何问题你都可以这样回答,大不了可以用一个同名函数覆盖,这里肯定初衷是强调Equal是判断引用相同,而是值相等,也就是与 11 的区别回复引用查看22楼 2008-03-01 11:10 河间当当办公用品网未注册用户流程挺全的回复引用查看23楼 2008-03-01 11:34 Silent Void jillzhang 有时面试官问的问题本身就比较模糊,可能问之前也没有仔细斟酌;但也正好留给面试者发挥的空间: 回复引用查看 24楼2008-03-01 14:42 Jeffrey Zhao jillzhang 如果我是面试别人,如果不提Equals和是可以重载的,这题一半已经错了。
还有就是,Equals和并没有说Equals判断引用相等,判断值相等。
判断引用相等,唯一正确的做法只有调用。
就拿你举的String类来说,我把它的和Equals的代码贴出来: public static bool operator string a string b return Equalsa b public static bool Equalsstring a string b return a b a null b nullEqualsHelpera b ET了呢而且Java里也是Equals代表值相等,代表引用相等,和你描述的正好相反,呵呵。