This is an old revision of the document!
Table of Contents
Study Questions - Audio Creation
CDEx Settings
Bitrate = 80 kbps
Mono
Quality = Very high (q = 0)
Questions To Be Recorded
Lesson 4: Detecting Management Events
C10L4Q1: What are the four most important members of the System.Management namespace?
Answer: ManagementQuery, EventQuery, ObjectQuery and ManagementObjectQuery.
C10L4Q2: What does WMI stand for?
Answer: Windows Management Instrumentation.
C10L4Q3: What are the two steps to retrieve information from the WMI?
Answer:
- Create a ManagementObjectSearcher object and pass the query into the constructor.
- Obtain a ManagementObjectCollection object by calling the ManagementObjectSearcher's Get method.
C10L4Q4: What needs to be selected from to enumerate the logical drives?
Answer: Win32_LogicalDisk
C10L4Q5: What needs to be selected from to enumerate the network adapters?
Answer: Win32_NetworkAdapterConfiguration
C10L4Q6: What needs to be selected from to enumerate the Windows Services?
Answer: Win32_Service
C10L4Q7: What class would be used to respond a change in the WMI?
Answer: ManagementEventWatcher
Lesson 1: Understanding Code Access Security
C11L1Q1: What does CAS stand for?
Answer: Code Access Security.
C11L1Q2: What is the relationship between evidence, code groups and permission sets?
Answer: The evidence that an assembly has determines what code group or groups it belongs to. The code group or groups determines what permission set or sets it gets.
C11L1Q3: What are the two types of evidence?
Answer: Host evidence and assembly evidence.
C11L1Q4: What are the three CAS policy levels and which one would you most commonly use?
Answer: Enterprise, machine and user. Machine policy is the most commonly used.
C11L1Q5: What must an assembly have to increase its trust?
Answer: A strong name.
C11L1Q6: As a developer, the permission set assigned to the My_Computer_Zone should be changed from what to what?
Follow up question: Why should it be changed?
Answer: From “Full Trust” to “Everything”.
Follow up answer: Full Trust completely skips all CAS statements in code. The Everything permission set has similar permissions, but it does not skip CAS statements.
C11L1Q7: What is the command line utility for maintaining CAS settings?
Answer: Caspol.exe - Code Access Security POLicy tool.
Lesson 2: Using Declarative Security to Protect Assemblies
C11L2Q5: What are the three SecurityActions?
Answer: RequestMinimum, RequestOptional and RequestRefuse.
C11L2Q6: CAS declarations are in what type of assemblies?
Answer: Fully trusted assemblies (or assemblies with the Full Trust permission set).
Lesson 3: Using Declarative and Imperative Security to Protect Methods
C11L3Q1: How many declarative CAS security actions are available for assemblies and how many are available for methods?
Answer: Three for assemblies, six for methods.
C11L3Q2: What are the three declarative CAS security actions for assemblies?
Answer: RequestMinimum, RequestOptional and RequestRefuse.
C11L3Q3: What are the six declarative CAS security actions for methods?
Answer: Assert, Demand, Deny, InheritanceDemand, LinkDemand, and PermitOnly.
C11L3Q4: What is the difference between the Demand CAS security action and the LinkDemand CAS security action?
Answer: Demand checks the security of all the callers, LinkDemand only checks the security of the immediate caller.
C11L3Q5: Which class is used to specify what to check for in a declarative permission statement and which is used in an imperative permission statement?
Answer: Declarative permission statements use SecurityAction, imperative permission statements use CodeAccessPermission.
C11L3Q6: How should a method check if it has a particular CAS permission?
Answer: Call the System.Security.SecurityManager.IsGranted method.
C11L3Q7: Which two security actions reduce CAS permissions for a method and what is the difference between the two?
Answer: Deny and PermitOnly. Deny removes only the specified permission, PermitOnly removes all except the specified permission.
C11L3Q8: Which two security actions reduce CAS permissions for an assembly and what is the difference between the two?
Answer: RequestRefuse and RequestOptional. RequestRefuse removes only the specified permission, RequestOptional removes all except the specified permission.
C11L3Q9: Deny and PermitOnly perform similar functions to what?
Answer: RequestMinimum and RequestOptional.
C11L3Q10: RequestMinimum and RequestOptional perform similar functions to what?
Answer: Deny and PermitOnly.
C11L3Q11: As the security action Assert can only be used once in a method, how can multiple CAS permissions be asserted?
Answer: Add the permissions to a PermissionSet object and assert that.
Lesson 2: Exposing .NET Components to COM
C13L2Q1: When .NET components are consumed by COM, what handles the marshalling between .NET and COM?
Answer: The COM Callable Wrapper (CCW).
C13L2Q2: How do you hide a public .NET class from COM?
Answer: Give it a ComVisible attribute and pass in false.
C13L2Q3: What is used to export an assembly to COM?
Answer: Visual Studio or the Type Library Exporter Utility.
Lesson 3: Using Unmanaged Code
C13L3Q4: What attribute is used to specify a library when creating a P/Invoke?
Answer: DllImport
C13L3Q5: What attribute is used to determine what order members of a structure are stored in memory?
Answer: StructLayoutAttribute
C13L3Q6: What are the three methods for determining what order members of a structure are stored in memory and how are they specified?
Answer: Auto, sequential and explicit. An instance of LayoutKind is passed to the attribute StructLayout.
Lesson 1: Understanding Reflection
C14L1Q1: What are the four parts of an assembly?
Answer: Assembly metadata (or manifest), type metadata, code and resources.
C14L1Q2: What is the relationship between assemblies, modules and types?
Answer: An assembly can contain one or more modules (although typically just one). A module can contain one or more types. An assembly can not directly contain a type (or types must be contained in a module).
Lesson 2: Assembly Attributes
C14L2Q1: How do you get a reference to the current assembly?
Answer: Call the Assembly.GetExecutingAssembly method.
C14L2Q2: Using reflection, how can you get a collection of all the attributes that a class has?
Answer: Call the Assembly.GetCustomAttributes method, which will return an array.
C14L2Q3: What happens when the revision part of the version number in the AssemblyVersionAttribute is set to an asterisk?
Answer: It will be replaced with a random number by the compiler.
C14L2Q4: What happens when the build part of the version number in the AssemblyVersionAttribute is set to an asterisk?
Answer: It will be replaced with an automatically incrementing number by the compiler.
Lesson 3: Reflecting Types
C14L3Q1: How do you create a Type object based on a particular object?
Follow up question: How do you create a Type object based on a particular class?
Answer: Call the object's GetType method.
Follow up answer: Use the typeof keyword.
C14L3Q2: If a string has been cast into a variable of type object, what will calling the method GetType on the variable return?
Answer: A Type object that represents the string class.
Lesson 5: Creating Code at Runtime
C14L5Q1: Which class is used to create a dynamic assembly?
Answer: AppDomain.
Lesson 1: Using Culture Information
C16L1Q1: What are the three culture categories?
Answer: Invariant, neutral and specific.
Pragmatic Programming
PragC2Q5: What is Meyer's Uniform Access principle?
Answer:
“All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation.”
or
“Class properties are good.”
PragC2Q6: What are two techniques for avoiding or reducing inadvertent duplication?
Answer: Normalise the data and don't store what can be calculated.
PragC2Q7: What should be done if the DRY principle needs to be violated for performance reasons?
Answer: Ensure the violation is not exposed to the outside world by keeping it contained with in the class.
PragC2Q8: How do you avoid impatient duplication?
Answer: Discipline.
PragC2Q9: What adage relates to impatient duplication?
Answer:
“Short cuts make for long delays.”
PragC2Q10: What is orthogonality?
Answer: Independence or decoupling.
PragC2Q11: What are the two major benefits of orthogonality?
Answer: Increased productivity and reduced risk.
PragC2Q12: How can you get an informal measurement of how orthogonal a team is?
Answer: Determine how many people need to be involved in discussing each change that is requested. The less people, the more orthogonal and better off the team is.
PragC2Q13: How can low orthogonality affect a team?
Answer: Confusion over responsibilities leading to bickering.
Life Questions
LifeQ3: What is the effect / affect usage mnemonic?
Answer: VANE - Verb Affect Noun Effect
Article 1: Design Principles and Design Patterns, Robert C. Martin
Art1P4Q3: What is the Open Closed Principle and who came up with it?
Answer:
“A module should be open for extension, but closed for modification.” - Bertrand Meyer
Art1P5Q1: What is the key to the OCP?
Answer: Abstraction.
Art1P8Q1: What is the Liskov Substitution Principle and who came up with it?
Answer:
“Subclasses should be substitutable for their base classes.” - Barbara Liskov
Art1P8Q2: What is the canonical example of the subtleties of the LSP?
Answer: The Circle / Ellipse dilemma.
Art1P12Q1: Violations of the LSP are also what?
Answer: Violations of the OCP.
Art1P12Q2: What is the Dependency Inversion Principle?
Answer:
“Depend on abstractions. Do not depend on concretions.”