笔试题01

作者: 大玲_ | 来源:发表于2015-09-07 22:20 被阅读369次

希望读者带着批评的眼光,别误导了您!本人才疏学浅,略做记录,您有更好答案,请您指教!

1. 如何实现应用第一次启动时的使用向导?

这个可以理解为每次版本高更新时,第一次打开首先显示的应该是引导画面。
在AppDelegate.m文件中实现判断

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//在此处判断是否为新版本是否为第一次登陆
//如果是第一次登陆,将rootViewController设置为引导控制器
    self.window.rootViewController = NewFeatureController;
}

2. 如何实现一个自定义视图,给定一个NSArray的坐标点数组,在视图上显示对应的曲线。

相关知识: 绘制 文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
CGContextRef:Graphics Context是图形上下文,可以将其理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.
需要重写:- (void)drawRect:(CGRect)rect 方法。
附上文章一篇 写的非常好!

效果图

3. 如何为一个TextField控件加入自定义的边框?

1.重写一个文本将
2.简单的方法:
self.background = [UIImage imageNamed:@"searchbar_textfield_background"];
其他的一些属性

设置边框样式
[textField setBorderStyle:UITextBorderStyleNone];
设置边框颜色
textField.layer.borderColor = [[UIColor redColor]CGColor];
//设置UITextField的文字颜色
tf.textColor=[UIColor redColor];
 
//设置UITextField的文本框背景颜色
tf.backgroundColor=[UIColor grayColor];
 
//设置UITextField的边框的风格
tf.borderStyle=UITextBorderStyleRoundedRect;

 
//设置UITextField的代理
tf.delegate=self;
 
//设置UITextField的文字对齐方式
tf.textAlignment=UITextAlignmentCenter;//居中对齐
tf.textAlignment=UITextAlignmentLeft;//左对齐
tf.textAlignment=UITextAlignmentRight;//右对齐
tf.textAlignment=UITextAlignmentFill;//填充对齐
 
//设置UITextField的文字大小和字体
tf.font=[UIFont fontWithName:@"Times New Roman" size:20];
 
//设置UITextField自适应文本框大小
tf.adjustsFontSizeToFitWidth=YES/NO;//自适应宽度
tf.adjustsFontSizeToFitHeight=YES/NO;//自适应高度
 
//设置UITextField是否拥有一键清除的功能
tf.clearsOnBeginEditing=YES/NO;
 
//设置一键清除按钮是否出现
tf.clearButtonMode=UITextFieldViewModeNever;
 
//设置UITextField的初始隐藏文字
tf.placeholder=@"输入密码";
 
//当UITextField的样式为UITextBorderStyleNone的时候,修改背景图片
tf.background=[UIImage imageNamed:@"xx.png"];
 
//设置UITextField的左边view
tf.leftView=xxx;
 
//设置UITextField的左边view出现模式
tf.leftViewMode=UITextFieldViewModeAlways;
 
//设置UITextField的右边view
tf.rightView=xxx;

//设置UITextField的右边view出现模式
tf.rightViewMode=UITextFieldViewModeAlways;
 
//设置UITextField的字的摆设方式
tf.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
 

4. 分析给出某个页面界面的实现方式?注意屏幕旋转等的处理。

这里解答一下屏幕旋转的问题吧!
如何获取:
1.注册UIDeviceOrientationDidChangeNotification通知

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientChange:)name:UIDeviceOrientationDidChangeNotification object:nil];

- (void)orientChange:(NSNotification *)noti
{
    
    NSDictionary* ntfDict = [noti userInfo];
    
    UIDeviceOrientation  orient = [UIDevice currentDevice].orientation;
    /*
     UIDeviceOrientationUnknown,
     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
     UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
     UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
     UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
     UIDeviceOrientationFaceUp,              // Device oriented flat, face up
     UIDeviceOrientationFaceDown             // Device oriented flat, face down   */
    
           switch (orient)
        {
            case UIDeviceOrientationPortrait:
                
                break;
            case UIDeviceOrientationLandscapeLeft:
    
                
                break;
            case UIDeviceOrientationPortraitUpsideDown:
 
          
                break;
            case UIDeviceOrientationLandscapeRight:
        
           
                break;
                
            default:
                break;
        }
}

2.注册UIApplicationDidChangeStatusBarOrientationNotification通知,以来stausBar

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:)name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];

- (void)statusBarOrientationChange:(NSNotification *)notification
{
    
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationLandscapeRight) // home键靠右
    {
        //
    }
    
    if (
        orientation ==UIInterfaceOrientationLandscapeLeft) // home键靠左
    {
        //
    }
    
    if (orientation == UIInterfaceOrientationPortrait)
    {
        //
    }

    if (orientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        //
    }
}

5. 如何同时为iPad和iPhone做屏幕适配?

AutoLayout,sizeClass

开源框架:Masonry

6. 继承和协议、category是怎么回事?可以同其他语言做类比吗(比如Java或C++)?类似[a b]的消息调用,运行时是如何确定b的?

继承是继承的子类拥有父类的方法和属性

private:私有成员,不能被子类继承;

protected:保护成员,可以被子类继承;

public:公有成员,可以被外部函数访问,也可以被子类继承。

可以重写父类方法

协议是Delegate:只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。例如一个view向另一个view传值。

Category是分类:是为了扩展已有类的新的行为。例如给NSString添加生成时间戳的方法。

7. 代码块(block)是怎么回事?代码块是对象吗?要如何理解呢?

8. 使用过NSThread吗?要如何使用?GCD是怎么回事?

NSThread和GCD都是多线程。

GCD 是一个替代诸如 NSThread 等技术的很高效和强大的技术,利用GCD可以实现多线程。

例如利用GCD多线程可以解决页面UI与网络下载的阻塞问题(UITableviewCell)。

9. 怎么编写库?进行组件/代码复用的库有何注意事项?如何使用C/C++开发的库?有何注意事项?

在分享一篇文章他们写的比我写的好。

10.Socket是否使用过?TCP和UDP区别是什么?单播、组播、广播分别是什么?

区别
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用“点对点通信”(Point to Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。
2.多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。   IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。Windows 2000中的DHCP管理器支持多播IP地址的自动分配。
3.广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。   广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。   在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。

11. http POST和GET的差异?http和https有何不同?

Get:相对不安全 , 参数在url后面,传输长度小

Post:相对安全,参数在请求体中,传输的长度相比较长

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单。

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

在ios9中,要求使用https协议。但也可以不适用。

12. 是否使用过自动化测试框架?介绍一下。

自动化测试框架

什么是证书,有哪些种类?如何做app签名?如何进行testflight发布测试?

证书是开发者购买的测试和发布应用程序的签名文件。
有个人开发者证书($99)和企业开发证书($299)
在苹果开发整中心生成相关p12文件进行测试和发布应用程序。

14. Svn里的conflict是怎么回事?如何处理?

多人协作时,修改同一句或一段代码,更新或提交时会造成冲突。可以对冲突进行合并。删除冲突,重新提交。

相关文章

网友评论

    本文标题:笔试题01

    本文链接:https://www.haomeiwen.com/subject/yuoucttx.html