In Swift Enumerations Whats The Difference Between Raw Values And Associated Values
Raw values are used to associate constant values to enum cases.The value type is part of the enum type, and each enum case must specify a unique raw value .
The following example shows an enum with raw values of type Int:
enum IntEnum : Int
An enum value can be converted to its raw value by using the rawValue property:
var enumVar: IntEnum = IntEnum.TWOvar rawValue: Int = enumVar.rawValue
A raw value can be converted to an enum instance by using a dedicated initializer:
var enumVar: IntEnum? = IntEnum
Associated values are used to associate arbitrary data to a specific enum case.Each enum case can have zero or more associated values, declared as a tuple in the case definition:
Whereas the type associated to a case are part of the enum declaration, the associated value are instance specific, meaning that an enum case can have different associated values for different enum instances.
What Are Optionals How Can You Unwrap An Optional In A Safe Way What Is Forced Unwrapping
Forced unwrapping provides direct access to the value by using the exclamation mark. When the optional has no value , forced anwrapping leads to a runtime error.
What’s The Difference Between Using A Delegate And Notification
Both are used for sending values and messages to interested parties. A delegate is for one-to-one communication and is a pattern promoted by Apple. In delegation the class raising events will have a property for the delegate and will typically expect it to implement some protocol. The delegating class can then call the _delegate_s protocol methods.Notification allows a class to broadcast events across the entire application to any interested parties. The broadcasting class doesn’t need to know anything about the listeners for this event, therefore notification is very useful in helping to decouple components in an application.
Don’t Miss: Java Programming Questions For Interview
Do You Test Your Code What Do You Do To Make Your Code Testable
This is embarrassing but we admit that we dont do testing as much as we should. We know we really really should do it more. We are talking about Unit Testing and Integration Testing specifically here.
Expected answer: There is only one right answer here: either they do it or they wish they would. In general iOS community isnt as big on testing as say Ruby community. Partially it is due to inherited lack of testing culture and partially due to lack of good tools for testing but things seem to be improving on that front.
What Is A Good Use Case For An Inout Parameter
inout means that changing the local variable will also change the passed parameters. Without it, the passed parameters will remain at the same value. Try thinking of a reference type when using Inout and a value type without it.
1. A good use case would be the swap function, where it will change the passed parameters.
2. Consider removing the overhead of copying as well. If you have a function that takes a somewhat memory-large value type as an argument and returns the same type, and finally, the return of the function is always used only to replace the caller argument, then inout as the associated function parameter is preferable.
Read Also: What Happens In An Exit Interview
What Do You Know About Singletons Where Would You Use One And Where You Wouldn’t
This is a typical objective oriented programming question. In the case of iOS, you can get a feel of how the interviewee is using it in his/her apps. Youll be able to weed out those people who came from Java/PHP and such and use it as a global store or something similar.
Expected answer: Singletons should be avoided and used only for objects that need to be shared throughout your application for same reason. It should be used carefully, instantiated lazily, if its possible, and passed into other objects as a dependency using Inversion of Control and Dependency Injection principles.Red flag: is when the interviewee talks about global variables and stores.
What Are Synchronous And Asynchronous Tasks In Ios
If you are an experienced iOS developer, you must know synchronous and asynchronous tasks in iOS. When you perform the synchronous tasks, you have to wait for the task to complete before proceeding. On the other hand, when you perform tasks asynchronously, you dont have to wait to complete tasks. You can perform the tasks simultaneously. When tasks are completed in the background, will notify you.
The figure clearly explains that synchronous tasks take more time to complete while asynchronous tasks run simultaneously and take less time to complete.
Recommended Reading: Interview Questions For Personal Assistant
How Do You Manage Dependencies
Dependency management is an important task in every iOS project. This question gauges your understanding of the problem and its solution.
A few years back, we didnt have any dependency managers on iOS and had to copy-paste and drag-and-drop third-party code into our projects or to use Git sub-modules. Those approaches proved to be unmanageable as our codebase and dependencies grew.
These days we have other dependency managers to choose from: CocoaPods, Carthage, and Swift Package Manager.
So far the most dominant and robust one is CocoaPods. I was built in the spirit of the Ruby Bundler gem and is a Ruby gem itself. The way it works is you install the gem, create Podfile in the root directory of your project, declare the pods you want to use, and run pod install. Thats it.
With Carthage, you create a dependencies declaration file called Cartfile but unlike Cocoapods youd need to do Xcode project setup to make it work.
Swift Package Manager is the future of dependency management for any Swift project but it only supports libraries and frameworks and cannot be used to generate iOS targets, although iOS targets can depend on modules built by SPM.
Every iOS developer should understand why copy-pasting third-party libraries into your codebase leads to a maintenance nightmare when several libraries could depend on two different versions of another library, causing mismatches and compile and runtime issues.
Further reading for this question:
When Should You Use A Structure And When Should You Use A Class
There’s an ongoing debate about whether using classes over structures is a good or bad practice. Functional programming tends to favor value types, whereas object-oriented programming prefers classes.In Swift, classes and structures differ by a number of features. You can sum up the differences as follows:
- Classes support inheritance, structures don’t
- Classes are reference types, structures are value types
- At runtime, structures are more performant than classes because method invocations are statically bound, whereas method invocation for classes is dynamically resolved at runtime. That’s another good reason to use structures instead of classes when possible.
What Are Protocols In Swift Give An Example
A protocol is a code contract. It acts as a blueprint for properties, methods, etc. It describes how the type conforming to it must behave.
You cannot create instances of protocols. Rather, you can make e.g. a class conform to a protocol.
Here is an example protocol that describes an animal:
protocol Animal var color: String func makeSound}
Lets create classes Cat and Dog that both conform to the Animal protocol. It is thus required that they both implement the behavior described in the Animal protocol that is, variables name, color and the makeSound method:
class Cat: Animal }class Dog: Animal }
Write Names Of Components Of Process Control Block
Following are the components of Process Control Block:
29. State different Process States in OS.
Processes in the operating system can be in any of the following states:
- New: the process is being created.
- Ready: The process is waiting to be assigned to a processor.
- Running: Commands are being executed.
- Waiting: Process is waiting for some event to occur.
- Terminated: The process has completed execution.
Don’t Miss: What Questions Should I Ask For An Interview
Differentiate App Id From Bundle Id Why Are They Used
An App ID is used to identify one or more applications from a single development team. It consists of a Team ID and a bundle ID search string separating the two parts with a period . The Team ID is supplied by Apple and is particular to a specific development team, while the developer supplies the bundle ID search string. Whereas the bundle ID is defined by each App and is specified in Xcode. A single Xcode project has different targets and therefore outputs multiple apps.
What Is Ios Swift
The interviewer often begins by asking you to provide a personal explanation and definition of the iOS Swift coding language. This question allows you to showcase the depth of your knowledge and your ability to communicate the ideas and core principles of the subject. Include a simple yet thorough overview of the purpose and elements of Swift that offer clear communication and understanding.
Example:”Swift coding is a general-purpose coding language that uses a compiled programming system. Swift serves as an iOS development tool for creating Apple technology applications and functions. The features in Swift aim to reduce common programming errors by using a type-safe language that prevents incorrect data types or illogical statement executions.”
You May Like: How To Prepare For A Python Interview
Top 50 Swift Interview Questions
Top Swift Interview Questions and Answers with Examples:
Swift is a powerful and interactive programming language created for iOS, macOS, tvOS and watchOS, and Linux development by Apple Inc.
Swift is a fantastic way to develop software, it is an interactive programing language which is fast, safe, and friendly to new programs. Swift is the most popular language for developing apps for Apples devices, it is an alternative to the Objective-C language with some added object-oriented features.
Swift defines major classes of usual programming errors by adopting recent programming patterns as shown below:
- Swift is easy to learn.
- It is approachable.
- Variables are always initialized before use.
- Integers are checked for overflow.
- Provides modern programming features.
- Switch function can be used instead of the if statement.
- High Speed & safer performance, Code complexity.
- Support of dynamic libraries.
What Is Force Unwrapping When Should You Use It
Force unwrapping tries to convert an optional to a value regardless of it contains a value or not.
Force unwrapping is unsafe because if the optional is nil and you try to unwrap it, it triggers an error that crashes the app. Thus, it should be avoided unless youre 100% sure the optional is not nil.
Also Check: What Do You Wear To An Interview
Define The Function Of The Completion Handler
Completion handlers are just functions passed as parameters to other functions. They are used to dealing with asynchronous tasks since we do not know when they will end. Completion handlers tell an application when an operation, such as an API call, has been completed. The program is notified that the next step needs to be completed.
What Considerations Do You Need When Writing A Uitableviewcontroller Which Shows Images Downloaded From A Remote Server
- Only download the image when the cell is scrolled into view, i.e. when cellForRowAtIndexPath is called.
- When the image has downloaded for a cell we need to check if that cell is still in the view or whether it has been re-used by another piece of data. If its been re-used then we should discard the image, otherwise we need to switch back to the main thread to change the image on the cell.
- Other good answers will go on to talk about offline caching of the images, using placeholder images while the images are being downloaded.
You May Like: How To Make A Teacher Portfolio For Interviews
What New Ios Features Were You Most Excited To Use
An interviewer asks you about new iOS features and offers a more open-ended question for you to show your awareness of recent developments, tools and processes in Swift programming. This question assesses your knowledge and tests your ability to research and understand new information or changes. Answer with a thorough explanation of one or two recent Swift or iOS features and connect them to your skills or experience. Your answer also shows your interest and excitement in iOS development and advancements.
Example:”New iOS features like widgets, SF symbols and App Clips offer great advancements for the functionality and design of mobile app programming. I was especially excited about the addition of SF symbols which add to the visual design and appeal of the end-user interface. I think for mobile apps in particular, symbols provide much more intuitive and efficient navigation for the user than text-based content.”
Please note that the company mentioned in this article is not affiliated with Indeed.
What Do You Mean By Process Synchronization
Process synchronization is a way to interrelate processes that use shared resources or data. It is very much important to make sure synchronized execution of cooperating processes. It will maintain data consistency. It shares resources without any interference using mutual exclusion. There are two types of process synchronization:
- Independent Process
Recommended Reading: What To Say In An Email After An Interview
What Are Generics And What Problem Do They Solve
Generics are used to make algorithms safely work with types. In Swift, generics can be used both in functions and data types, e.g. in classes, structures or enumerations.Generics solve the problem of code duplication. A common case is when you have a method that takes a type of parameter and you have to duplicate it just to accommodate a parameter of another type.
func areTheyEqual< T: Equatable> -> Bool areTheyEqualareTheyEqual
What’s The Difference Between Structures And Classes
In Swift, the different data types and value classifications provide varying functions and abilities. An interviewer may ask you to distinguish between structures and classes to determine your knowledge of the terms, uses and restrictions of each data type. Include an explanation for each data type in your answer and contrast the uses and functions.
Example:”In Swift, a Structure operates as a value type while classes work as a reference type. Classes can support inheritance of characteristics from other defined classes, but structure data types don’t support any inheritance functions. Classes also support mutability and typecasting while structure sets don’t allow for any mutability or typecasting.”
Read Also: How To Nail A Video Interview
What Is The Difference Between Stack And Heap Memory
The stack is a simple first-in-first-out memory structure. The stack is always used to store the following two things: the reference portion of local variables and parameters of the reference type, and local variables and method parameters with a value type.
Heap memory contains random non-lined objects stored in memory. The advantage is that it allows objects to be allocated or released in a random order. This will require you to use garbage collector functions to free memory.
The heap stores the following: the contents of reference type objects.
Do You Have Any Coding Shortcuts You Like To Use
During an interview, the hiring manager might ask you if you have any coding shortcuts you have discovered and like to use because it reveals your experience with the program. This question may also reveal your problem-solving abilities when encountering a challenge. To answer this, share a story about how you discovered the shortcut and when you like to use it. Describe how it can shorten the time you spend on a coding activity and how you may have more time to spend on an assignment with more importance.
Example answer:’I do have coding shortcuts I like to use with my keyboard. The one I use frequently is using the shift and control buttons combined with the T key for finding classes quickly. When I began my career, I had a mentor from my coding internship. They told me about this solution when I was expressing my frustrations about not getting everything on my to-do list accomplished for the day because I was manually looking for classes. Ever since then, I use it each day and found it helps improve my efficiency.’
Don’t Miss: How To Pass Amazon Interview
What Do You Mean By Rtos
Real-Time Operating System is an operating system used for real-time applications, i.e., for those applications where data processing should be done in a fixed and small amount of time. It performs very well on tasks that must execute within a short time. It also manages execution tasks, monitoring, and all-controlling process. It also occupies less memory and consumes few resources.
What’s Your Preference When Writing Ui’s Xib Files Storyboards Or Programmatic Uiview
There’s no right or wrong answer to this, but it’s great way of seeing if you understand the benefits and challenges with each approach. Here’s the common answers I hear:
- Storyboard’s and Xib’s are great for quickly producing UI’s that match a design spec. They are also really easy for product managers to visually see how far along a screen is.
- Storyboard’s are also great at representing a flow through an application and allowing a high-level visualization of an entire application.
- Storyboard’s drawbacks are that in a team environment they are difficult to work on collaboratively because they’re a single file and merge’s become difficult to manage.
- Storyboards and Xib files can also suffer from duplication and become difficult to update. For example if all button’s need to look identical and suddenly need a color change, then it can be a long/difficult process to do this across storyboards and xibs.
- Programmatically constructing UIView’s can be verbose and tedious, but it can allow for greater control and also easier separation and sharing of code. They can also be more easily unit tested.
Also Check: How To Interview Someone For A Job