为什么想开发,开发周期,有什么难点,怎么解决
开发觉得很有意思,喜欢玩游戏,想看到自己开发的游戏让别人去玩。
1,问题的界定和方案
2,需求分析
3,程序设计
4,程序编码
5.软件测试
6,操作和维护
开发周期可能会比预先的时间要长,因为受到开发环境和其他要素的影响,比如任务分配问题,举例说明就是任务分配的时间不当,需求理解问题,就是程序员对客户的需求理解不够到位,导致沟通上出现问题,又或者是客户的需求随着程序员的开发而不断改变,协调不畅。剩下的因素还有可能是程序员本身的技术不够硬等。
解决办法我个人认为就是派专员协助好程序员和客户之间的关系,协调供需。同时即使动态调整分配的任务时间。
StringBuilder和StringBuffer区别
在这方面运行速度快慢为:StringBuilder > StringBuffer > String
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
数组和链表的区别
数组:数组元素在内存上连续存放,可以通过下标查找元素;插入、删除需要移动大量元素,比较适用于元素很少变化的情况,
链表:链表中的元素在内存中不是顺序存储的,查找慢,插入、删除只需要对元素指针重新赋值,效率高
数组要考虑越界问题,链表很少考虑
抽象类和接口
同
1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
异:
(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
python的
局部变量
局部变量是在函数内部定义的变量,只能在函数内部使用。函数执行结束后,函数内部的局部变量,会被系统回收不同的函数,可以定义相同名字的局部变量,但是是互不影响的,之间没有什么关系。
全局变量
全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
函数执行时,需要处理变量时会:
首先查找函数内部是否存在指定名称局部变量,如果有,直接使用如果没有,查找函数外部是否存在指定名称的局部变量,如果有,直接使用如果还没有,程序就会报错!
反射的定义:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
主要用途:
反射最重要的用途就是开发各种通用框架。
判断链表里面是否有循环
两个指针隔位前进,相遇无,无相遇有环
二叉树和堆之间联系或区别
二叉排序树是为了实现动态查找而设计的数据结构,它是面向查找操作的,在二叉排序树中查找一个结点的平均时间复杂度是O(log n);
堆是为了实现排序而设计的一种数据结构,它不是面向查找操作的,因而在堆中查找一个结点需要进行遍历,其平均时间复杂度是O(n)。
TCP的三次握手和四次挥手 有点难
1-n的全排列
import itertools
array = [1, 2, 3, 4]
pailie = list(itertools.permutations(array)) # 要list一下,不然它只是一个对象
for x in pailie:
for y in x:
print(y, end=' ')
print()
或者递归的方法:
def count(a, p, end):
if p == end:
priont(a)
else:
for i in range(p, end):
a[i], a[p] = a[p],a[i]
count(a, p+1, end)
a[i], a[p] = a[p], a[i]
Python实现常见的排序算法_FriendshipT的博客-CSDN博客
包括 直接插入排序
希尔排序
冒泡
快速排序
简单选择排序
堆排序
归并排序



