↳
FYI, in 2020, this is still relevant.
↳
Relevant in 2021 too.
↳
OP here. Yes, for my interview on site they only asked two
↳
Another approach would be to create a hashtable/dict with key as a tuple (city,hotel name) and value to be the occurrence of the hotel name in that city (count, keep incrementing the count when seen). When the hashtable is created, iterate over items and see whose value >= 3 and return the tuple's/key 1st value Weniger
↳
using golang ---- package main import ( "fmt" ) func main() { input := [][]string{{"hotel_1234", "Sheraton", "Amsterdam"}, {"hotel_1000", "Sheraton", "Buenos Aires"}, {"hotel_1001", "Hilton", "Amsterdam"}, {"hotel_1002", "Royal Palace", "Bogota"}, {"hotel_1003", "Hilton", "Amsterdam"}, {"hotel_1004", "Sheraton", "Buenos Aires"}, {"hotel_1005", "Sheraton", "Buenos Aires"}, } confuse_cities := []string{} Cities := make(map[string]map[string]int) for _, line := range input { if _, ok := Cities[line[2]]; ok { if val, ok2 := Cities[line[2]][line[1]]; ok2 { Cities[line[2]][line[1]] = val + 1 if Cities[line[2]][line[1]] == 3 { confuse_cities = append(confuse_cities, line[2]) } } } else { Cities[line[2]] = map[string]int{} Cities[line[2]][line[1]] = 1 } } fmt.Println(confuse_cities) } Weniger
↳
from collections import Counter Input = [ ("hotel_1234", "Sheraton", "Amsterdam") , ("hotel_1000", "Sheraton", "Buenos Aires") , ("hotel_1001", "Hilton", "Amsterdam") , ("hotel_1002", "Royal Palace", "Bogota") , ("hotel_1003", "Hilton", "Amsterdam") , ("hotel_1004", "Sheraton", "Buenos Aires") , ("hotel_1005", "Sheraton", "Buenos Aires"), ("hotel_1232", "Sheraton", "Amsterdam"), ("hotel_123222", "Sheraton", "Amsterdam") ] confusing_cities = [] for i,v in Counter((elem[1],elem[2]) for elem in Input).items(): if v >= 3: confusing_cities.append(i[1]) print(confusing_cities) Weniger
↳
The correct approach is to show that you can break down the problem. 2^32 = 2^10 * 2^10 * 2^10 * 2^2. 2^10 = 2^8 * 2*2 = 256 * 4 ~(roughly) 1000 So: 2^32 ~ 1000 * 1000 * 1000 * 4 = 4,000,000,000 Weniger
↳
4 giga
↳
The number that will overflow a variable of type unsigned 32-bit int. const MAX_U32INT = 2^32 -1 Weniger
↳
P2P is the first thing that came to my mind. BitTorrent is a good tool and I believe Twitter or Facebook has developed this kind of distributing tool based on BitTorrent protocol. And I don't believe the 1TB data will be read at the same time. We can write a FUSE module that mount the directory from the central server. When one of the files was read, we can copy it and cache it locally. Weniger
↳
P2P is the best solution. If P2P is not allowed. We can use broadcast, for example: server1-> server2, then we have 2 sources, server1->server3, server2-server4; then it will take about (time to transfer one copy)*log(10000)= 3*3.32192809489*(time to transfer one copy). For fault tolerance, redundancy or retry. Or deploy a distributed file system so that file can be accessed. Central server solution is like NFS, however, NFS's server could be bottleneck. Weniger
↳
We can take checksum of the file when it is correct and compare it with the checksum of the same file in future. If both checksum are found to be same then the file isn't corrupted otherwise it is corrupted. Weniger
↳
Those are not the answers that they are looking for. You basically answered what happens when you turn your computer on with: "The picture appears on the monitor". A proper answer involves: shell word splitting, searching PATH, loading dynamic libs, argument parsing, syscalls, /proc. If you don't know what ps is doing, it isn't hard to find out. Weniger
↳
It's a question to check if you understand behind the scenes of a terminal when a command is issued. I would answer it in that way: when I type a command and press enter, the Shell has a command line parser that checks if the text entered is a available command in the PATH or not, if not found it checks the system libs to see if it can find the definition of it, if nothing is found, it throws error ": command not found". In the successful case, where the command is found it loads the binary from the defined path and a system call is executed accordingly to fetch the process data from the OS. Weniger
↳
see list of all processes
↳
Wrote code.
↳
This is what I came up with, probably not the smartest way : #!/usr/bin/env python def sum_to_n(numbers, n): """ Pick the first two numbers in the list first, then add the third one. Return if the sum is equal to n. Then remove the first two, since you are done with them. Do the same thing as long as you have at least 3 elements in the list """ numbers = numbers.split(",") output = [] first = int(numbers[0]) second = int(numbers[1]) while len(numbers) > 2: for item in numbers[2:]: if first + second + int(item) == n: output.append((first, second, item)) numbers.pop(0) numbers.pop(1) first = int(numbers[0]) second = int(numbers[1]) return output numbers = raw_input("Enter a comma separated list of integers:") n = raw_input("Enter an integer:") print sum_to_n(numbers, int(n)) Weniger
↳
public static void printPairSums(int[] array, int sum) { Arrays.sort(array); // 2 pointeurs int first = 0; int last = array.length - 1; while (first < last) { int s = array[first] + array[last]; if (s == sum) { System.out.println("( "+array[first] + " ," + array[last]+ " )"); ++first; --last; } else { if (s < sum) ++first; else --last; } } } //Exemple public static void main(String[] args) { // TODO Auto-generated method stub int[] myIntArray = new int[]{1,2,3,-1,4,5,-2,7,1}; printPairSums (myIntArray, 3); } Weniger
↳
1 CPU 2 Memory 3 Context switching 4 Disk
↳
context switch - 3
↳
context switching is costlier than RAM access. I think we all have read this in those operating system lectures. Weniger
↳
Xavier, we appreciate the interview did not go as planned and we are sorry you are upset. You are of course entitled to express your own opinions though such ill-wishes against our business and your personal attacks against our CEO are unjust. Weniger
↳
I think the company just make it worst.. is evident the impossibility to get any constructive criticism.. even coming from an outsider in a shape of a totally legit review. "ill wished & personal attacks". Thats your definition of the best and most sincere review this company ever had ?... what is next ?.. ask again everyone to vote positively on the page to increase company ratings ? Stop deceiving the system and start tackling the inside problems. It isn't about a bad review, its about bad practices and situations that have been happening for several years inside the company without solution. 1) Is this the only review that mentions the weird behaviour of your CEO in the interviews ?.. and i quote from other review: "feeling of disrespect and intimidation".. When i got hired, we did not had such process.. probably i won't get hired today, but i proved my value to the company for several years. It's true that he ask people to believe in him.. but everything have a limit and he sometimes behaves with no common sense at all, but i liked him because he is smart.. but he don't like to listen so its quite arrogant and disrespectful. 2) Half company quitted because it was impossible to work with him or near him.. ain't that true ? Because here you have many employees that agrees with the review and i saw it with my own eyes.. a week where half dozen developers suddenly quit.. 3) Its not true that the company does not follow DevOps or SRE industry standards ? Let me be more precise, isn't true that you don't have TechOps team but just 1 Junior Sysop as SRE and one Mid Level SysOp that act as SRE with nearly 3 dozen of developers, QA got fired and there is no DevOps team ?? 4) Many of the workers interviews talk about the leak of senior profiles and the absolute absence of mentoring, im one of them. Now is pretty clear why.. nobody can work in AfterShip.. the CEO is in the middle with another of his weird processes that negatively impacts the company.. as usual. 5) Its totally true the CEO is CFO,COO,CXO,HR,CTO.. and any other title you can come out. He is in the middle of everything.. 6) I wonder why you don't explain what happened 1 year ago when he tried to implement SCRUM by himself.. after the epic fail and some other people quitting the company, he end hiring a Scrum Master. From my perspective as AfterShip former worker: this review, unfortunately, reflects some of the biggest problems of the company.. weird processes, neglect behaviour, incapacity of delegate and a incoherent management. We were on the same project, same product, same idea .. since the first day, with no improvements for over 3 years.. and i'm sure if he focus and think on how to grow the company products and step out of the other thousand process he put himself in the middle, things surely will go better. Work in AfterShip have some benefits, but the CEO is not one of them and certainly get hired is virtually impossible right now. The salary is below national standards, the requirements are high, plus the 'culture-fit' is virtually impossible to pass.. how a company can attract people in this way ? I can say that since i left AfterShip, i don't have to worry get fired just for complain about something that is not working in our business process, and the developers concerns are taken as constructive criticism and not as an offence or an excuse to get fired. Weniger
↳
"ill-wishes against our business and your personal attacks against our CEO are unjust." Nobody wish you anything bad and nobody attack your CEO. Im sorry that AfterShip feels shame about his stage in the recruiting process.. but everything i said in the review was a true fact of the reality and other answers and reviews just agree with what i said. Im very sorry that my honesty and transparency of the interview caused you so big discomfort that you had to threat the recruiter... Nobody passes the 'culture-fit' .. No mentoring.. Lack of management.. Lack of methodologies... are not my words, but also several other reviews of your workers. You should consider those premises as possible true facts and start work on them. I believe in the transparency of GlassDoor reviews, even your workers report your "forced" request of good reviews in GlassDoor.I suggest you to solve your internal problems and good reviews will come as reward of such changes. My goal reviewing your company is not a revenge, is not a fight, is not an ill wish: It's about make your company and candidates aware of the problems, give them the chance to consider or improve the process. Your banal comment, your attempt to dilute GlassDoor reviews and your threat to the recruiter only proves that you are more concern on hide the problem then to fix it.. suggest stop whimper and start solving your internal malfunctions. If after one year, you had solved the recruiting problem and is reflected in GlassDoor reviews. I'll consider to rewrite the review, you can mail me. Until then, you'll keep the review as its a true mirror of what is going on there. Regards Weniger
↳
A palindrome is a word that has the same spelling forward and backwards. “1234” are numbers and cannot be a palindrome. Weniger
↳
“acrecar” is a palindrome by that definition of the word, “racecar”, “dad”, “pop”, “poop”. These I feel like may be better examples. “454” would be an example of a palindrome that is a number. Weniger
↳
Count the occurrence of each character; if more than one char has odd number of occurrences, it’s false Weniger