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 ...
随机推荐
- HTML5 监听移动端浏览器返回键兼容版本
// 往windosw对象中的历史记录注入URL的方法 function addUrl() { var state = { title: "title", url: "# ...
- leetcode27
public class Solution { public int RemoveElement(int[] nums, int val) { var len = nums.Length; ; ; i ...
- Unable to open file '.RES'
Unable to open file '.RES' 另存工程,带来的隐患,工程图标也改不了. 搜索发现源码里某个man.cpp里带了prgram resource aaa.res,换成新工程文件名 ...
- jsfl 发布保存关闭
fl.getDocumentDOM().publish(); fl.getDocumentDOM().save(); fl.getDocumentDOM().close();
- Redis基本操作-string
Redis的5种数据结构:string.list.hash.set和zset; Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数 ...
- 在eclipse的web项目里面创建jsp时第一行报错
原因是因为项目里面没有配置tomcat,配置一下tomcat就好了
- svn更新代码时控制台出现的英文字母表示什么意思
U:表示从服务器收到文件更新了 G:表示本地文件以及服务器文件都已经更新,而且成功的合并了 A:表示有文件或者目录添加到工作目录 R:表示文件或者目录被替换了 C:表示文件的本地修改和服务器修改发生冲 ...
- C# 窗口页面卡的处理方案-异步编程委托
今天用winform做了一个小程序,主要是用于远程数据的登录采集,因为数据量非常大,到时每次点击按钮执行程序的时候界面都会出现假死状态,具体表现是无法拖动窗口,无法最小化或关闭等,只能任务管理进程结束 ...
- conductor Workflow Metrics
Server Metrics conductor使用spectator收集指标.https://github.com/Netflix/spectator 名称 目的 标签 workflow_serve ...
- 运行Maven项目时出现invalid LOC header (bad signature)
为Maven小白,今天这问题困扰了我好久,经过多次在网上查询,终于找到了原因.明明一个小问题却耗费很多时间,着实不应该,所以必须记录一下. 报错信息如下: 对话框: 控制台: <span s ...