A few days ago, I got an email with inquiry if I would like to participate in recruitment process to Google. I thought why not. It is always good to gain some experience around that. After a phone interview which was not successful for me, but I am not sad about that fact at all, I thought that I might give you some insight what areas you should refresh or just learn quickly. Of course your questions will be correlated with those areas which you picked up before phone interview, but I assume that some of them might be similar with those which I chose.
- Operating systems - monitors, semaphores, mutexes, linux, unix, processes, inode
- Algorithm Complexity - big O notation for different algorithms. Provide some complexity for sorting algorithms. Pick up those data structures which have following complexity for instance O(n log (n))
- Mathematics - calculate something very quickly in mind for instance 2 to the power of 32
- Trees - big O notation for different operation performed on trees like AVL, Binary trees
- Java - question related to programming language which you chose
Some of you might be interested in presentation which I made recently for internal training purpose. Topic is "Mutation testing with Pitest".
If you are trying to speed up your Android phone, you should consider uninstalling Facebook! You can read more about that phenomenon for instance here : https://www.reddit.com/r/Android/comments/42kyph/uninstalling_facebook_speeds_up_your_android/. To be honest my phone is much faster after removing Facebook.
Have you ever wondered how to map enums from one to another ? Did you use switch statement to make it work ? Now you can use method immutableEnumMap from class Maps which is part of Guava. Below you can find an example.
public class EnumSourceMapper { static ImmutableMap<EnumSource, EnumDestination> mapper; static { mapper = Maps.immutableEnumMap(ImmutableMap.<EnumSource, EnumDestination>builder() .put(EnumSource.SUCCESS, EnumDestination.SUCCESS) .put(EnumSource.INCOMPLETE, EnumDestination.ERROR) .put(EnumSource.FAIL, EnumDestination.ERROR) .build()); } public EnumDestination getEnumDestination(EnumSource enumSource) { return mapper.get(enumSource); } }
Recently I was trying to convert some cash in EUR currency, but I did not have time to watch currency graph all the time. So, I have created small tool which will let me know via email when currency will get more expensive above some concrete level. You can put below script in cron to execute it with some time interval. I used Sparkpost as a email provider.
import urllib2
import json
from sparkpost import SparkPost
sp = SparkPost('YOUR_API_KEY')
def currencyConverter(currency_from,currency_to):
yql_base_url = "https://query.yahooapis.com/v1/public/yql"
yql_query = 'select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20("'+currency_from+currency_to+'")'
yql_query_url = yql_base_url + "?q=" + yql_query + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"
try:
yql_response = urllib2.urlopen(yql_query_url)
try:
yql_json = json.loads(yql_response.read())
currency_output = 1 * float(yql_json['query']['results']['rate']['Rate'])
return currency_output
except (ValueError, KeyError, TypeError):
return "JSON format error"
except IOError, e:
if hasattr(e, 'code'):
return e.code
elif hasattr(e, 'reason'):
return e.reason
currency_from = "EUR" # currency codes : http://en.wikipedia.org/wiki/ISO_4217
currency_to = "PLN"
direction_rate = 4.44
rate = currencyConverter(currency_from,currency_to)
print rate
if rate > direction_rate:
response = sp.transmissions.send(
recipients=['YOUR_EMAIL@gmail.com'],
html='Rate of ' + currency_from + currency_to + ' equals ' + str(round(rate, 2)) + '
',
from_email='test@sparkpostbox.com',
subject='EuroMonitor'
)
print(response)
else:
print "Rate too low"
Reference :
[1] EuroMonitor Source Code
I had a chance to work with Spring Test DBUnit [1] (integration between Spring testing framework and DBUnit) with few tests related with Spring Integration. Most of them use the same common text context which contains embedded database H2. Funny thing was that some tests failed, because of some tables already exist. The issue is that embedded database is not cleared between tests and it is reused within the same context. That's why you should use @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) with @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class}) like below :
@ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class YourTest { }
Reference :
[1] Spring Test DBUnit
[2] Spring Framework - DirtiesContext
