Concepts for English interview (Unfinished)

来源:互联网 发布:mac mpv 安装教程 编辑:程序博客网 时间:2024/05/20 04:12
  • What is OOT(object oriented technology)?

Object oriented programming have three characteristics in common: encapsulation, polymorphism and inheritance. (Improve the codes reuse)

In the object-oriented finite element program, utilizing the inheritance and polymorphism may establish the object family that has the same key features, and can achieve the reuse of the code.

  • What is encapsulation?

The encapsulation is defined as "the process of packaging your program, dividing each of its classes into two distinct parts: the interface and the implementation." It’s the ability to provide users with a well-defined interface to a set of functions in a way which hides their internal workings.

We shouldn’t be concerned with how the object accomplishes it. The idea is "don't tell me how you do it; just do it."

  • What is polymorphism?

In object-oriented programming, polymorphism refers to the ability to obtain type-specific behavior based on the dynamic type of a reference or pointer.

The polymorphism applies at run time to classes related by inheritance, and it essentially means that one name can be used for several related but slightly different purposes.

  • What are the differences between Class and Struct?

In C++, they don’t have any differences except: The default access modifier of Struct is public, when the default access modifier of Class is private.

In C#, Struct is a value type but Class is a reference type; Struct can not be inherited but Class can;

  • What is value type and what is reference type?

When a value-type instance is created, a single space in memory is allocated to store the value.

With reference types, however, an object is created in memory, and then handled through a separate reference—rather like a pointer.

The Common Language Runtime allocates memory for objects in two places: the stack and the heap.

The stack is always used to store the following two things:

The reference portion of reference-typed local variables and parameters (such as the myTextBox reference)

Value-typed local variables and method parameters (structs, as well as integers, bools, chars, DateTimes, etc.)

The following data is stored on the heap:

The content of reference-type objects.

Anything structured inside a reference-type object.

  • What is boxing and what is unboxing?

Boxing is the process of converting a value type to the type object or to any interface type implemented by this value type. When the CLR boxes a value type, it wraps the value inside a System.Object and stores it on the managed heap. For example: int i=10; object obj=i;

Unboxing extracts the value type from the object. For example: int j=(int)obj;

  • What are the differences between stack and heap? (Static storage area)

The stack is an area in memory that is used directly by the microprocessor to store data during program execution. Variables on the stack are sometimes called automatic or scoped variables. (Local variable)

  The second approach is to create objects dynamically in a pool of memory called the heap. In this approach you don’t know until runtime how many objects you need, what their lifetime is, or what their exact type is. Those decisions are made at the spur of the moment while the program is running. If you need a new object, you simply make it on the heap when you need it, using the new keyword. When you’re finished with the storage, you must release it using the delete keyword.

  The static storage area is simply a fixed patch of memory that is allocated before the program begins to run. (Global variable)

When you use new or malloc() the memory is normally allocated from the heap. When you allocate an object within a function, it goes on the stack. The stack is much faster than the heap but also smaller and more expensive.

  • What is virtual function? What is pure virtual function? (abstract function) What is abstract class?

A virtual function is a member function of a class, whose functionality can be over-ridden in its derived classes. Virtual function is the basis of realizing polymorphism.

A virtual function provides a default implementation and it can exist on either an abstract class or a non-abstract class.

An abstract function has no implementation and it doesn’t have method body, and it can only be defined on an abstract class. This forces the derived class to provide an implementation.

A class with one or some pure virtual functions is an abstract class. We can not create objects for an abstract class. An abstract class can not be defined as a sealed class or a static class.

If there are some functions defined as pure virtual in a base class that means the derived class will need to redefine. If the derived class doesn’t redefine the pure virtual functions, this derived class is an abstract class too.

  • What is the difference between abstract class and interface?

An Interface cannot implement methods. An abstract class can implement methods.

An Interface can only inherit from another Interface. An abstract class can inherit from a class and one or more interfaces.

An Interface cannot contain fields. An abstract class can contain fields.

An Interface can contain property definitions. An abstract class can implement a property.

An Interface cannot contain constructors or destructors. An abstract class can contain constructors or destructors.

An Interface can be inherited from by structures. An abstract class cannot be inherited from by structures.

An Interface can support multiple inheritance. An abstract class cannot support multiple inheritance.

  • What is overload and overwrite (override)?

Method overloading is compile time polymorphism. It’s happening in one class.

Method overriding is runtime polymorphism. It’s happening in two classes: the base class and the derived class.

Overloading comes when you define two methods or more than two methods with the same name in the same class with different signature.

Overriding comes when you redefine a method that has already been defined in a base class with their same signature.

  • What is static variable and static method? What is static class?

A static variable is associated with the class as a whole rather than with specific instances of a class. Each object will share a common copy of the static variables.

A static method is a method that belongs to the class rather than any object of the class and doesn’t apply to an object or even require that any objects of the class have been instantiated.

A class can be declared static, indicating that it contains only static members, and it’s impossible to create instances of a static class.

You can call a static method for the class itself without any object.

In fact, static method calls are resolved at compile time.

Static methods are implicitly final, because overriding is done based on the type of the object, and static methods are attached to a class, not an object. A static method in a base class can be shadowed by another static method in a subclass, as long as the original method was not declared final. However, you can’t override a static method with a non-static method. In other words, you can’t change a static method into an instance method in a subclass.

You can refer to a static method either through an object as you can with any method, or with the special additional syntax ClassName.method( ).

  • What is sealed class and what is sealed method or property?

A sealed class is a class which can’t be inherited, so there couldn’t have any abstract functions in sealed class.

When applied to a method or property, it means that the method or property can’t be overridden again, and the sealed modifier must always be used with override since the method or property must be the virtual member of the base class.

  • What is the difference between the following access modifiers?

Public: The type or member can be accessed by any other code in the same assembly or another assembly that references it.

Private: The type or member can only be accessed by code in the same class or struct.

Protected: The type or member can only be accessed by code in the same class or struct, or in a derived class.

Internal: The type or member can be accessed by any code in the same assembly, but not from another assembly.

Protected internal: The type or member can be accessed by any code in the same assembly, or by any derived class in another assembly.

  • What is Generics?

Generics allow you to define type-safe data structures, without committing to actual data types. This results in a significant performance boost and higher quality code, because you get to reuse data processing algorithms without duplicating type-specific code.

Generics provides a way for you to communicate the type of a collection to the compiler, so that it can be checked. Once the compiler knows the element type of the collection, the compiler can check that you have used the collection consistently and can insert the correct casts on values being taken out of the collection.

Generics permit classes, structs, interfaces, delegates, and methods to be parameterized by the types of data they store and manipulate.

Generics are useful because they provide stronger compile-time type checking, require fewer explicit conversions between data types, and reduce the need for boxing operations and run-time type checks.

  • What is delegate and what is event?

A delegate in C# is similar to a function pointer in C or C++. Using a delegate allows the programmer to encapsulate a reference to a method inside a delegate object. The delegate object can then be passed to code which can call the referenced method, without having to know at compile time which method will be invoked.

Event is a special delegate. We have seen that the event keyword is a modifier for a delegate declaration that allows it to be included in an interface, constraints it invocation from within the class that declares it, provides it with a pair of customizable accessors (add and remove) and forces the signature of the delegate (when used within the .NET framework).

  • What is Reflection?

.NET Framework’s Reflection API allows you to fetch Type (Assembly) information at runtime programmatically..NET Reflection allows application to collect information about itself and also manipulate on itself. It can be used effectively to find all the types in an assembly and/or dynamically invoke methods in an assembly. This includes information about the type, properties, methods and events of an object. With reflection we can dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. We can also access attribute information using reflection. (From meta data.)

Using reflection, you can get any kind of information which you can see in class viewer, for example information of methods, properties, field’s, and event’s of an object.

  • Foreach?

First, using a while loop accessing the IEnumerator based object directly, and second, using a foreach loop accessing the enumerator through the IEnumerable interface.

  • What are the constructor and destructor? Why we use virtual destructors ?

A constructor looks like a special method having no return type and its name is same with the class name. If we do not declare constructor explicitly for a class, compiler will create a default constructor at run time.

A constructor cannot be virtual because at the time when the constructor is invoked the virtual table would not be available in the memory.

The overloaded constructor: Create an object constructor must be used, construction methods to create the most important function is to initialize the object.

Destructors are used to destruct instances of classes. Following are features of destructor:

The name of the destructor is the name of the class, preceded by a tilde (~).

A class can have one destructor only.

Destructors cannot be inherited or overloaded.

Destructors are invoked automatically.

Destructor can not have modifiers or parameters.

When destructor is called, Finalize is called from destructor implicitly.

In particular, the destructor for a base class normally should be virtual. The reason is that when derived class destructor is called, the base class destructor is also getting called. Virtual destructor is used so that while deleting the pointer to a base class but pointing to a base class invokes the Derived classes destructor first then the base classes destructor. Hence preventing a memory leak.

  • What is copy constructor?

A copy constructor is a special constructor in the C++ programming language used to create a new object as a copy of an existing object. The first argument of such a constructor is a reference to an object of the same type as is being constructed (const or non-const), which might be followed by parameters of any type (all having default values).

Normally the compiler automatically creates a copy constructor for each class (known as a default copy constructor) but for special cases the programmer creates the copy constructor, known as a user-defined copy constructor. In such cases, the compiler does not create one.

A user-defined copy constructor is generally needed when an object owns pointers or non-shareable references, such as to a file, in which case a destructor and an assignment operator should also be written.

  • What is the difference between reference and point in C++?

Reference

Pointer

is an object which IS AN ALIAS for another object

is an object that CONTAINS THE ADRRESS IN MEMORY of another object

the preferred way of undirectly access objects

you should use it just if you really need it, as it lets you to work in a lower level than a reference does

keeps your code clear

the code is less clear but still understandable

it must be initialized when created

you don’t have to initialize it when declared

it references to the one object and only that one, therefore you can not modify the address referenced

because it contains an address, it can point to many different objects during lifetime. The address can be manipulated

when used, the address is dereferenced without using any particular operator

the address must be dereferenced using the * operator

Const point is just like reference.

  • What is smart pointer in C++? Garbage collection in C++?

To be smarter than regular pointers, smart pointers need to do things that regular pointers don't. What could these things be? Probably the most common bugs in C++ (and C) are related to pointers and memory management: dangling pointers, memory leaks, allocation failures and other joys. A smart pointer could take care of these things.

The smart pointer is just a class that will do the following things:

Constructor: A simple wrapper around a regular pointer.

Destructor: the destructor takes care of deleting the pointer.

Overload the operator asterisk (*).

Create a copy constructor.

Overload the assignment operator. (If we don’t have copy constructor and assignment operator, maybe two objects of the class will point to a same memory.)

Reference counting: Maintain a count of the smart pointers that point to the same object, if new assignment or invoke the copy constructor, the count will increase by one, if one smart pointer is destruct the count will decrease by 1. Then release the allocated memory when this count becomes zero.

  • final, finally, finalize?

final variable is a constant. final method cann't be overrid. final class cann't be subclassed.

finally is a block usually used to release all the resources utilized inside the try block such as to free resources like stream objects, to close sockets .The code in finally block is guaranteed of execution irrespective of occurrence of exception catched/uncatched.

finalize is never run more than once on any object. finalize method is called by the garbage collector on an object when the garbage collector determines that there are no more references to the object.

  • process and thread?

An application consists of one or more processes. A process, in the simplest terms, is an executing program. One or more threads run in the context of the process. A thread is the basic unit to which the operating system allocates processor time. A thread can execute any part of the process code, including parts currently being executed by another thread.

  • Why we use multi-thread instead of multi-process? In what scenario do we use multi-process instead of multi-thread?

Multi-threading refers to an application with multiple threads running within a process, while multi-processing refers to an application organised across multiple OS-level processes.

1、多线程的优点

  a 数据共享方便(不需要进程间的通信)

  b 占用系统内存小

  c 提高cpu利用率

2. 多进程的优点

 a. 一个进程core掉不会影响到其他进程

 b. 编程简单

3. 多线程的缺点

 a  调试困难

 b  防止读写竞争,锁机制

 c 编程复杂

4. 多进程的缺点

  a 耗资源

  对任务进行划分,有些任务是CPU密集型的,有些任务是IO密集型的。例如数据采集,

  在多线程的情况下,可以保持CPU的高利用率。

Multi-thread and Multi-process

 

  • Use which function when switching the message of different processes?

Pipe, message queue

  • What is garbage collection?

C++ doesn’t have. .Net Framework and Java have.

The .NET Framework's garbage collector manages the allocation and release of memory for your application. Each time you create an object, the runtime allocates memory for the object from the managed heap. As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. However, memory is not infinite. Eventually the garbage collector must perform a collection in order to free some memory. The garbage collector's optimizing engine determines the best time to perform a collection, based upon the allocations being made. When the garbage collector performs a collection, it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.

  • C# vs VB vs C++. What is the difference between C and C++?

In the past, different programming languages tended to do things in their own way. Programmers using C++ would, in all probability, make use of the types and routines provided by the Microsoft Foundation Classes (MFC) libraries; Visual Basic had its own built-in types and routines; non-Microsoft languages such as Delphi and Java used yet other class libraries, each of which was incompatible with each other.

      With the advent of .NET that has changed. No matter which programming language you use, you will have access to the same rich collection of classes and functions provided by the .NET Framework. Indeed, it is even possible to write classes in one language and derive descendant classes from them in another language. Your source code is not compiled directly into a machine code executable. Instead it is translated into Microsoft Intermediate Language (MSIL). This intermediate language is only converted into machine code when the program is run by the .NET Common Language Runtime (CLR).

I think VB is every bit as powerful as C#, it has full access to the .NET Framework and its compiled applications should generally be just as fast and efficient as similar applications written in C#.

On the whole, C# is much terser than VB.NET. Some people would argue that the more verbose syntax of VB.NET makes the code clearer. Ultimately, this is a matter of personal preference which is likely to depend on your previous programming experience.

More significantly, C# gives programmers the option of using pointers. Pointers are variables which refer or ‘point’ to specific locations in memory. They are so widely used in C and C++ that many programmers may find it difficult to conceive of programming without them.

The trouble with pointers is that they are inherently unsafe. They make it easy to corrupt memory, overwrite data and crash your applications. C# discourages the use of pointers but does permit their use within blocks of code marked with the unsafe directive.

Even so, it is not quite true to say that pointers can never be used. VB.NET provides access to pointers using the IntPtr type. This allows a limited range of pointer operations. For example, an IntPtr variable can be used to store a handle to a file or a window.

Of course, there are other .NET languages available too. At first sight, C++ might seem the most attractive choice for programmers with previous experience of that language. You need to be aware, however, that the .NET version of C++ is best used for manipulating unmanaged memory. In most cases, C# would be a better choice of .NET language for a programmer with C++ experience. Unlike C++, the C# language was specifically designed for the .NET Framework. It benefits from a simple syntax, garbage collection and type safety to eliminate many potential bugs.

  • Which sorting algorithm is stable?

Quick sort, Shell sort are not stable. Bubble sort, merge sort, insertion sort are stable.

  • Link list. Circular linked list. (Singly linked list, doubly linked list, multilinked list)

遍历:Traversal, 时间复杂度:Time complexity, 递归算法:recursive algorithm.

  • Binary tree (Binary Sort Tree, Binary node)

Traversal of a binary tree : 遍历二叉树的非递归算法,其中有先序遍历,中序遍历和后序遍历。(preorder traversal, inorder traversal, postorder traversal).

breadth-first search, depth-first search.

  • Database – Index, View

Put simply, database indexes help speed up retrieval of data. The other great benefit of indexes is that your server doesn't have to work as hard to get the data. They are much the same as book indexes, providing the database with quick jump points on where to find the full reference.

One disadvantage is they can take up quite a bit of space - check a textbook or reference guide and you'll see it takes quite a few pages to include those page references.

Another disadvantage is using too many indexes can actually slow your database down. So indexes speed up finding data, but slow down inserting, updating or deleting data.

In database theory, a view consists of a stored query accessible as a virtual table composed of the result set of a query. Unlike ordinary tables (base tables) in a relational database, a view does not form part of the physical schema: it is a dynamic, virtual table computed or collated from data in the database. Changing the data in a table alters the data shown in subsequent invocations of the view.

Views can provide advantages over tables:

Views can represent a subset of the data contained in a table

Views can join and simplify multiple tables into a single virtual table

Views can act as aggregated tables, where the database engine aggregates data (sum, average etc) and presents the calculated results as part of the data

Views take very little space to store; the database contains only the definition of a view, not a copy of all the data it presents

Depending on the SQL engine used, views can provide extra security

Views can limit the degree of exposure of a table or tables to the outer world

  • One-Way Function and Hash Function/Map. What the common Hash Function?

1.HashTable的方法是同步的(synchronized)HashMap未经同步(not synchronized),即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决: Map Collections.synchronizedMap(Map m).

2.HashTable不允许null(keyvalue都不可以),HashMap允许null(keyvalue都可以)

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用EnumerationHashMap使用Iterator

5.HashTablehash数组默认大小是11,增加的方式是 old*2+1HashMaphash数组的默认大小是16,而且一定是2的指数。

  • Cluster Index.
  • Storage Process.
  • OS. (Windows and Linux)
  • TCP/IP. What is the difference between TCP and UDP?

Layer

Description

Protocols

Application

Defines TCP/IP application protocols and how host programs interface with transport layer services to use the network.

HTTP, Telnet, FTP, TFTP, SNMP, DNS, SMTP, X Windows, other application protocols

Transport

Provides communication session management between host computers. Defines the level of service and status of the connection used when transporting data.

TCP, UDP, RTP

Internet

Packages data into IP datagrams, which contain source and destination address information that is used to forward the datagrams between hosts and across networks. Performs routing of IP datagrams.

IP, ICMP, ARP, RARP

Network interface

Specifies details of how data is physically sent through the network, including how bits are electrically signaled by hardware devices that interface directly with a network medium, such as coaxial cable, optical fiber, or twisted-pair copper wire.

Ethernet, Token Ring, FDDI, X.25, Frame Relay, RS-232, v.35

Physical

Constitutes of the physical equipment necessary for communications, such as twisted pair cables, equipment and system for the signaling such as Ethernet, SONET/SDH, ISDN, Modems, Routers, etc.

 

 

TCP

UDP

Reliability: TCP is connection-oriented protocol. When a file or message send it will get delivered unless connections fails. If connection lost, the server will request the lost part. There is no corruption while transferring a message.

Reliability: UDP is connectionless protocol. When you a send a data or message, you don't know if it'll get there, it could get lost on the way. There may be corruption while transferring a message.

Ordered: If you send two messages along a connection, one after the other, you know the first message will get there first. You don't have to worry about data arriving in the wrong order.

Ordered: If you send two messages out, you don't know what order they'll arrive in i.e. no ordered

Heavyweight: - when the low level parts of the TCP "stream" arrive in the wrong order, resend requests have to be sent, and all the out of sequence parts have to be put back together, so requires a bit of work to piece together.

Lightweight: No ordering of messages, no tracking connections, etc. It's just fire and forget! This means it's a lot quicker, and the network card / OS have to do very little work to translate the data back from the packets.

Streaming: Data is read as a "stream," with nothing distinguishing where one packet ends and another begins. There may be multiple packets per read call.

Datagrams: Packets are sent individually and are guaranteed to be whole if they arrive. One packet per one read call.

 

  • Windows Server 2008, Active Directory (AD)
  • Systems Center Configuration Manager (SCCM)
  • Windows Deployment Services (WDS)
  • VMWare ESX, Microsoft Virtual Server/PC
  • Microsoft App-V
  • Citrix XenApp/XenDesktop
  • Microsoft SQL Server
  • Microsoft Exchange
  • Perforce
  • Jira

JIRA combines issue tracking, agile project management, customisable workflow, and a pluggable integration framework to increase the velocity of your software development team.

With JIRA at the centre of your development team, delivering quality software on-time has never been easier.

  • Understanding of/experience with SDLC methodology and software design patterns (product cycle)

1.       Planning

2.       Design

3.       Implementation

4.       Testing

5.       Acceptance

6.       Maintenance

7.       Disposal

  • Understanding of product engineering lifecycle and CMMI

CMMI is a process improvement approach that provides organizations with the essential elements of effective processes that ultimately improve their performance. CMMI can be used to guide process improvement across a project, a division, or an entire organization. It helps integrate traditionally separate organizational functions, set process improvement goals and priorities, provide guidance for quality processes, and provide a point of reference for appraising current processes.

The benefits you can expect from using CMMI include the following:

Your organization's activities are explicitly linked to your business objectives.

Your visibility into the organization's activities is increased to help you ensure that your product or service meets the customer's expectations.

You learn from new areas of best practice (e.g., measurement, risk)

  • Basic knowledge of PC and server hardware technologies including server blades, thin clients and HPC workstations
  • Knowledge of SAN, NAS, DFS

A storage area network (SAN) is an architecture to attach remote computer storage devices (such as disk arrays, tape libraries, and optical jukeboxes) to servers in such a way that the devices appear as locally attached to the operating system. A SAN typically is its own network of storage devices that are generally not accessible through the regular network by regular devices.

In contrast to SAN, network attached storage (NAS) uses file-based protocols such as NFS or SMB/CIFS where it is clear that the storage is remote, and computers request a portion of an abstract file rather than a disk block. Recently, the introduction of NAS heads has allowed easy conversion of SAN storage to NAS.

SANStorage Area Network的缩写,也就是说SAN是一个网络;

NASNetwork Attached Storage的缩写,也就是说NAS是一个存储设备;

Distributed File System (DFS) 服务管理分布在局域网 (LAN) 或广域网 (WAN) 的逻辑卷,而且是 Microsoft Active Directory? 目录服务 SYSVOL 共享所必需的。DFS 是将完全不同的文件共享集成为一个逻辑命名空间的分布式服务。

命名空间是网络存储资源的一种逻辑表示方法,这些网络存储资源对网络中的用户都可用。禁用 DFS 服务可以防止用户通过逻辑命名空间访问网络数据,要求用户必须知道环境中所有服务器和共享资源的名称才可以访问网络数据。

文件服务器增量式组策略禁用了 DFS 服务,以便将环境中文件服务器遭到的攻击面降到最小。为此,在本指南所定义的所有安全环境中,应该将 Distributed File System 设置配置为“禁用”。

  • Working knowledge of Clustering technologies such as Microsoft Cluster Server (MSCS), Veritas Volume Manager (VxVM), Veritas Cluster Server (VCS)
  • WPF - Windows Presentation Foundation

WPF provides two different API for .Net Object Model and XAML (eXtensible Application Markup Language).

Besides the connection method on .Net Framework 2.0, WPF also can use WCF for data binding.

Most advantage: It integrates many kinds of different features, most of them can be found on other UI technologies, such as the “vector animation” on Flash, the windows controls on Windows Forms and the Streaming Text Style on HTML.

Other advantages: Compared to the Web application, WPF has more powerful interaction. Compared to the Flash, WPF provides not only the high-quality Visual Effects and also the user controls.

Disadvantage: Need Windows and .Net Framework 3.0 support.

  • WCF- Windows Communication Foundation

WCF is one technology that using to develop and apply distributed service, it supports many kinds of Web Service.

  • What is call back?

In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine (or function) defined in a higher-level layer.

  • What is Iterators?

An iterator is a section of code that returns an ordered sequence of values of the same type.

An iterator can be used as the body of a method, an operator, or a get accessor.

The iterator code uses the yield return statement to return each element in turn. yield break ends the iteration.

Multiple iterators can be implemented on a class. Each iterator must have a unique name just like any class member, and can be invoked by client code in a foreach statement as follows: foreach(int x in SampleClass.Iterator2){}.

The return type of an iterator must be IEnumerable, IEnumerator, IEnumerable<(Of <(T>)>), or IEnumerator<(Of <(T>)>).

Iterators are the basis for the deferred execution behavior in LINQ queries.

  • What is StringBuilder class?

The String object is immutable. Every time you use one of the methods in the System.String class, you create a new string object in memory, which requires a new allocation of space for that new object. In situations where you need to perform repeated modifications to a string, the overhead associated with creating a new String object can be costly. The System.Text.StringBuilder class can be used when you want to modify a string without creating a new object. For example, using the StringBuilder class can boost performance when concatenating many strings together in a loop.

When initializing a StringBuilder, you are going down in performance. In my personal experience, a StringBuilder can be used where more than four or more string concatenations take place.

  • What are CTS, CLS and CLR?

CLR: Common Language Runtime

CTS: Common Type System

CLS: Common Language Specification

原创粉丝点击