Fibonacci number
Phone Screen
This phone screen will consist of a non-technical series of questions about you and the company, and then a second half of a simple technical question to be coded out
Non-Technical Questions
Answer the following questions (2-5 minute responses) technical answers not required, more interested in hearing about your reasoning
- Give me some quick background about you (go over your resume)
- Why do you want to work here?
- What's your favorite programming language and why?
- Where do you see yourself in 5 years?
- Do you have any questions about the company for me?
Solution
There aren't really any "correct" answers here, just make sure you're prepared to answer the following questions about the company you're interviewing with. Be honest, friendly and ready to defend any statements you make with logical arguments to back them up. Note, you should ALWAYS have follow-up questions.
Technical Questions
Answer the following question in the Markdown cell below. It's important to note that the cell below does NOT have syntax highlighting, its common in a phone screen interview to be given a text editor hich doesn't have anything more than basic text support
- Write a function that computes the Nth fibonacci number
Solution
There's many ways to answer this question, you might be required to solve it multiple ways and discuss some pros and cons of each way. Listed below are various solutions
## Example 1: Using looping technique
def fib(n): a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a print fib(7) # Using recursion
def fibR(n):
if n==1 or n==2:
return 1
return fib(n-1)+fib(n-2) print fibR(7) ## Example 3: Using generators
a,b = 0,1
def fibI():
global a,b
while True:
a,b = b, a+b
yield a
f=fibI()
f.next()
f.next()
f.next()
f.next()
f.next()
f.next()
print f.next() ## Example 4: Using memoization
def memoize(fn, arg):
memo = {}
if arg not in memo:
memo[arg] = fn(arg)
return memo[arg] ## fib() as written in example 1.
fibm = memoize(fib,7)
print fibm ## Example 5: Using memoization as decorator
class Memoize:
def __init__(self, fn):
self.fn = fn
self.memo = {}
def __call__(self, arg):
if arg not in self.memo:
self.memo[arg] = self.fn(arg)
return self.memo[arg] @Memoize
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
print fib(7)
13
13
13
13
13
Below is a table depicting averaged relative performance time in seconds over 10 runs to caluclate the 15000th fibonacci number.
| Fib(n=15000) | ||||
| loops | recursion | generators | memoization | memoization as decorator |
| 45 | 87 | 58 | 44 | 43 |
| 47 | 88 | 58 | 42 | 42 |
| 51 | 92 | 60 | 44 | 43 |
| 43 | 87 | 58 | 42 | 43 |
| 48 | 92 | 61 | 42 | 44 |
| 45 | 87 | 59 | 43 | 44 |
| 44 | 85 | 57 | 42 | 44 |
| 44 | 87 | 62 | 43 | 43 |
| 48 | 86 | 59 | 42 | 43 |
| 45 | 91 | 61 | 45 | 45 |
| 46 | 88.2 | 59.3 | 42.9 | 43.4 (Avg) |
Good Job!
Fibonacci number的更多相关文章
- Buge's Fibonacci Number Problem
Buge's Fibonacci Number Problem Description snowingsea is having Buge’s discrete mathematics lesson, ...
- [UCSD白板题] The Last Digit of a Large Fibonacci Number
Problem Introduction The Fibonacci numbers are defined as follows: \(F_0=0\), \(F_1=1\),and \(F_i=F_ ...
- [UCSD白板题 ]Small Fibonacci Number
Problem Introduction The Fibonacci numbers are defined as follows: \(F_0=0\), \(F_1=1\),and \(F_i=F_ ...
- (斐波那契总结)Write a method to generate the nth Fibonacci number (CC150 8.1)
根据CC150的解决方式和Introduction to Java programming总结: 使用了两种方式,递归和迭代 CC150提供的代码比较简洁,不过某些细节需要分析. 现在直接运行代码,输 ...
- 求四百万以内Fibonacci(number)数列偶数结果的总和
又对啦...开心~~~~ 只是代码可能不符合PEP标准什么的... Each new term in the Fibonacci sequence is generated by adding the ...
- Algorithms - Fibonacci Number
斐波那契数列(Fibonacci Number)从数学的角度是以递归的方法定义的: \(F_0 = 0\) \(F_1 = 1\) \(F_n = F_{n-1} + F_{n-2}\) (\(n \ ...
- 【LEETCODE】44、509. Fibonacci Number
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- 【leetcode】509. Fibonacci Number
problem 509. Fibonacci Number solution1: 递归调用 class Solution { public: int fib(int N) { ) return N; ...
- fibonacci number & fibonacci sequence
fibonacci number & fibonacci sequence https://www.mathsisfun.com/numbers/fibonacci-sequence.html ...
随机推荐
- leetcode977
public class Solution { public int[] SortedSquares(int[] A) { return A.Select(x => x * x).ToList( ...
- leetcode171
public class Solution { private int ConvertToC(char c) { ; switch (c) { case 'A': case 'a': rnt = ; ...
- 4.Spring中使用Log4j
转自:https://blog.csdn.net/luohai859/article/details/52250807 这里要实现web项目中利用Spring来使用Log4j (1)接上面的工程,然后 ...
- mysql 修改用户密码
修改mysql用户密码 目录 mysqladmin命令 UPDATE user 语句 SET PASSWORD 语句 root密码丢失的情况(待验证) mysqladmin命令(回目录) 格式如下 ...
- 迷你MVVM框架 avalonjs 1.3.8发布
avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...
- c pointer
1. 定义数组后,数组名是一个常数, 而指针是一个变量 如下: int a[10]; int *p; p=a; \\ 与 p=&a[0]等价 则*p++表示 a[1] 而 a++ 则是错误的 ...
- conductor 事件处理程序
Introduction conductor中的事件提供工作流之间的松散耦合,并支持从外部系统生成和消耗事件. 包括: 1. 能够在外部系统像SQS或Conductor内部生成一个事件(消息). 2. ...
- Hadoop slaves 没有nodeManager
1../start-yarn.sh 后从服务器没有nodemanager 进程,并且这里没有报错 在从服务器上的日志上见: 从服务器查看日志: 查看2.8.4官方文档: https://hadoop. ...
- zg项目 应用系统编码原则
一.编码说明: 1.系统编码采用三码为原则,通常两码简称之. 1>.子系统或类型 2>.系统小分类 3>.系统大分类 如 IPMS领域业务群: DA 应用软件发展管理系统 DE公用副 ...
- 引用mvvmlight dll ,操作command
前言 因为vs2010没有集成mvvmlight 所以想要使用mvvmlight的relaycomman需要引用dll 需要测试某个功能的时候,不能进行快带的集成 引用mvvmlight dll 如果 ...