We use cookies to personalize content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. By clicking "Accept Cookies," scrolling this page, clicking a link or continuing to browse otherwise, you agree to the use of cookies. Privacy and Cookie Policies
Actually, we don't support password-based login. Never have. Just the OAuth methods above. Why?
It's easy and quick. No "reset password" flow. No password to forget.
It lets us avoid storing passwords that hackers could access and use to try to log into our users' email or bank accounts.
It makes it harder for one person to share a paid Interview Cake account with multiple people.
Complexity
O(n) time and O(1) additional space.
Bonus
What if we wanted the highest product of 4 items?
What if we wanted the highest product of k items?
If our highest product is really big, it could overflow.↴
When you create an integer variable, your computer allocates a fixed number of bits for storing it. Most modern computers use 32 or 64 bits.
But some numbers are so big they don't fit even in 64 bits, like sextillion (a billion trillion), which is 70 digits in binary.
Sometimes we might have a number that does fit in 32 or 64 bits, but if we add to it (or multiply it by something, or do another operation) the result might not fit in the original 32 or 64 bits.
This is called an integer overflow.
For example, let's say we have just 2 bits to store integers with. So we can only hold the unsigned (non-negative) integers 0-3 in binary:
00 (0)
01 (1)
10 (2)
11 (3)
What happens if we have 3 (11) and we try to add 1 (01)? The answer is 4 (100) but that requires 3 bits and we only have 2.
What happens next depends on the language:
Some languages, like Python or Ruby, will notice that the
result won't fit and automatically allocate space for a
larger number.
In other languages,
like C# or Java, the
processor will sort of "do its best" with the bits it has,
taking the true result and throwing out any bits that
don't fit. So in our example above, when adding 01 to 11,
the processor would take the true result 100 and throw out
the highest bit, leaving 00.
Swift will throw an error if an integer overflows, unless
you've explicitly indicated that overflowing integers
should be truncated to fit (like
in C# or Java).
In languages where integer overflow can occur, you can reduce its likelihood by
using larger integer types, like C#'s long or C's long long int.
If you need to store something even bigger, there are libraries built to handle
arbitrarily large numbers.
In some languages, you can also take advantage of overflow-checking
features provided by the compiler or interpreter.
And use C#'s checked keyword,
which enables runtime overflow detection.
How should we protect against this?
What We Learned
Start your free trial!
Log in or sign up with one click to get immediate access to 3 free mock interview questions
Actually, we don't support password-based login. Never have. Just the OAuth methods above. Why?
It's easy and quick. No "reset password" flow. No password to forget.
It lets us avoid storing passwords that hackers could access and use to try to log into our users' email or bank accounts.
It makes it harder for one person to share a paid Interview Cake account with multiple people.
“Using Interview Cake improved my confidence, skill, and speed in solving coding challenges in real interviews, and helped me land an attractive job offer.
—
Sally