Ethan's Blog


  • Home

  • Archives

  • Tags

  • Search

《面试宝典》读书笔记 Ⅳ

Posted on 2018-01-06

容器、多线程、Java 数据库操作

Java Collections 框架

包含了大量集合接口以及这些接口的实现类和操作它们的算法。
Collection 是整个集合框架的基础,它里面储存一组对象,表示不同类型的 Collections,它的作用只是维护一组对象的基本接口而已。
Set、List、Map 都继承自 Collection 接口:

Read more »

Python 语言精要 Ⅲ

Posted on 2017-12-31

列表、集合以及字典的推导式

列表推导式是最受欢迎的 Python 的语言特性之一,只需一条简洁的表达式,即可对一组元素进行过滤,并对得到的元素进行转换变形。基本形式:

1
[expr for value in collection if condition]

这相当于下面这段 for 循环:

1
2
3
4
result = []
for val in collection:
if condition:
result.append(expr)

过滤条件可以省略。滤除长度小于等于 2 的字符串,并将剩下的字符串转换成大写字母形式:

1
2
3
4
strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
[x.upper() for x in strings if len(x) > 2]

>>> ['BAT', 'CAR', 'DOVE', 'PYTHON']
Read more »

Python 语言精要 Ⅱ

Posted on 2017-12-27

元组

元组(tuple)是一种一维的、定长的、不可变的Python 对象序列。最简单的创建方式是一组以逗号隔开的值:

1
2
3
4
tup = 4, 5, 6
tup

>>> (4, 5, 6)

任何序列或迭代器都可以被转换为元组:

1
2
3
4
tup = tuple('string')
tup

>>> ('s', 't', 'r', 'i', 'n', 'g')

元组的元素也可以通过方括号([])进行访问。
元组可以通过加号(+)运算符连接起来以产生更长的元组。
一个元组乘以一个整数,相当于是连接该元组的多个副本:

Read more »

面试题 11:旋转数组的最小数字

Posted on 2017-12-21

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1。

  • 查找较为简单,不外乎顺序查找、二分查找、哈希表查找、二叉排序树查找。
  • 遇到排序的数组(或者部分排序的数组),可以尝试用二分查找算法。
  • 哈希表和二叉排序树查找的重点在于考查对应的数据结构,而不是算法:
    • 哈希表最主要的优点是能够在 O(1) 时间内查找某一元素(效率最高),缺点是需要额外的空间;
    • 二叉排序树对应的数据结构是二叉搜索树。
  • 排序复杂一些,要求比较插入排序、冒泡排序、归并排序、快速排序等不同算法的优劣。
  • 要求应聘者写出快速排序的代码:Partition 函数 + 递归。
    Read more »

面试题 10:斐波那契数列

Posted on 2017-12-18

题目一:求斐波那契数列的第 n 项。
写一个函数,输入 n,求 Fibonacci 数列的第 n 项,斐波那契数列的定义如下:

  • 递归是在一个函数的内部调用这个函数自身;循环则是通过设置计算的初始值及终止条件,在一个范围内重复计算。
  • 如果没有特别的要求,应聘者可以尽量多采用递归的方法编程,可能引起:调用栈溢出。
  • 每一次函数调用,都需要在内存中分配空间以保存参数、返回地址、临时变量,而且往栈里压入数据和弹出数据都需要时间。
Read more »
1…495051…55
necusjz

necusjz

274 posts
16 tags
© 2016 - 2025 necusjz
Powered by Hexo
Theme - NexT.Mist